From 28cf15354b99b32d8d8d4ed4fccc6ac6022f24e8 Mon Sep 17 00:00:00 2001 From: Kout95 <65901733+Kout95@users.noreply.github.com> Date: Tue, 11 Jan 2022 16:15:23 +0100 Subject: [PATCH 01/37] =?UTF-8?q?Met=20=C3=A0=20jour=20la=20version=20d'op?= =?UTF-8?q?enfisca-france=20(#127)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Met à jour la version d'openfisca-france * Met à jour la version d'openfisca-france * Met à jour la version d'openfisca-france * Met à jour la version d'openfisca-france --- openfisca_paris/personnes_agees/paris_logement.py | 4 ++-- openfisca_paris/personnes_agees/personnes_agees.py | 5 +++-- .../personnes_handicapees/paris_complement_sante.py | 2 +- openfisca_paris/personnes_handicapees/psol.py | 6 +++--- setup.py | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/openfisca_paris/personnes_agees/paris_logement.py b/openfisca_paris/personnes_agees/paris_logement.py index bcfbecc..66a4b1d 100644 --- a/openfisca_paris/personnes_agees/paris_logement.py +++ b/openfisca_paris/personnes_agees/paris_logement.py @@ -15,8 +15,8 @@ class paris_logement_pa_plafond(Variable): reference = "article II.2.1.b/2 du règlement municipal du CASVP" def formula(famille, period, parameters): - salaire_minimum = parameters(period).marche_travail.salaire_minimum - smic_brut_mensuel = salaire_minimum.smic_h_b * salaire_minimum.nb_heure_travail_mensuel + salaire_minimum = parameters(period).marche_travail.salaire_minimum.smic + smic_brut_mensuel = salaire_minimum.smic_b_horaire * salaire_minimum.nb_heures_travail_mensuel # Utilisation des valeurs indicatives de service-public.fr pour passer du SMIC brut au SMIC net # https://www.service-public.fr/particuliers/vosdroits/F2300 diff --git a/openfisca_paris/personnes_agees/personnes_agees.py b/openfisca_paris/personnes_agees/personnes_agees.py index 3270f6a..14b2fcb 100644 --- a/openfisca_paris/personnes_agees/personnes_agees.py +++ b/openfisca_paris/personnes_agees/personnes_agees.py @@ -35,6 +35,7 @@ def formula(famille, period, parameters): personne_agee = famille.members('paris_personne_agee', period) personnes_agees_famille = famille.any(personne_agee) en_couple = famille('en_couple', period) - aspa = parameters(period).prestations.minima_sociaux.aspa + aspa_montant_maximum_annuel = parameters(period).prestations_sociales.solidarite_insertion.minimum_vieillesse.aspa.montant_maximum_annuel + - return personnes_agees_famille * (en_couple * aspa.montant_annuel_couple + not_(en_couple) * aspa.montant_annuel_seul) / 12 + return personnes_agees_famille * (en_couple * aspa_montant_maximum_annuel.couples + not_(en_couple) * aspa_montant_maximum_annuel.personnes_seules) / 12 diff --git a/openfisca_paris/personnes_handicapees/paris_complement_sante.py b/openfisca_paris/personnes_handicapees/paris_complement_sante.py index d3c37e7..cd55d4b 100644 --- a/openfisca_paris/personnes_handicapees/paris_complement_sante.py +++ b/openfisca_paris/personnes_handicapees/paris_complement_sante.py @@ -24,7 +24,7 @@ def formula(famille, period, parameters): en_couple = famille('en_couple', period) plafond_1 = where(en_couple, param_plafond.en_couple, param_plafond.personne_isolee) - param_aah = parameters(period).prestations.minima_sociaux + param_aah = parameters(period).prestations_sociales.prestations_etat_de_sante.invalidite plafond_2 = param_aah.aah.montant + param_aah.caah.majoration_vie_autonome return personnes_handicapees * (base_ressources <= max_(plafond_1, plafond_2)) diff --git a/openfisca_paris/personnes_handicapees/psol.py b/openfisca_paris/personnes_handicapees/psol.py index c316589..39a1e41 100644 --- a/openfisca_paris/personnes_handicapees/psol.py +++ b/openfisca_paris/personnes_handicapees/psol.py @@ -17,13 +17,13 @@ def formula(famille, period, parameters): base_ressource = famille('paris_base_ressources_couple', period) - aspa = parameters(period).prestations.minima_sociaux.aspa - aah = parameters(period).prestations.minima_sociaux.aah + aspa_montant_maximum_annuel = parameters(period).prestations_sociales.solidarite_insertion.minimum_vieillesse.aspa.montant_maximum_annuel + aah = parameters(period).prestations_sociales.prestations_etat_de_sante.invalidite.aah en_couple = famille('en_couple', period) # ASPA est utilisé comme seuil de ressources pour # les couples avec personne en situation de handicap # faute d'AAH pour couple - montant_psol_handicap = ((en_couple * aspa.montant_annuel_couple) / 12 + not_(en_couple) * aah.montant) + montant_psol_handicap = ((en_couple * aspa_montant_maximum_annuel.couples) / 12 + not_(en_couple) * aah.montant) return max_(montant_psol_handicap, base_ressource) diff --git a/setup.py b/setup.py index 9e85694..0dd00ba 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 61, < 81' + 'OpenFisca-France >= 102, < 103' ], extras_require = { 'test': [ From 12f222d6b855a124942603db241dc009de9395ab Mon Sep 17 00:00:00 2001 From: Kout95 <65901733+Kout95@users.noreply.github.com> Date: Tue, 11 Jan 2022 16:36:43 +0100 Subject: [PATCH 02/37] =?UTF-8?q?Met=20=C3=A0=20jour=20le=20setup=20(#128)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0dd00ba..b984629 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="2.4.1", + version="3.0.0", description="Plugin OpenFisca pour les aides sociales de la mairie de Paris", license="http://www.fsf.org/licensing/licenses/agpl-3.0.html", author="Mairie de Paris, Incubateur de Services Numériques (SGMAP)", From 47412a342fa31f7ea8e907a9e67216110e310234 Mon Sep 17 00:00:00 2001 From: CUGNIERE <16650011+Cugniere@users.noreply.github.com> Date: Mon, 17 Jan 2022 16:47:39 +0100 Subject: [PATCH 03/37] =?UTF-8?q?mise=20=C3=A0=20jour=20du=20package=20ope?= =?UTF-8?q?nfisca-france=20vers=20la=20version=20103=20(#129)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index b984629..c40734b 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.0.0", + version="3.1.0", description="Plugin OpenFisca pour les aides sociales de la mairie de Paris", license="http://www.fsf.org/licensing/licenses/agpl-3.0.html", author="Mairie de Paris, Incubateur de Services Numériques (SGMAP)", @@ -11,7 +11,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 103' + 'OpenFisca-France >= 102, < 104' ], extras_require = { 'test': [ From 4a209828a18ca4d54642decd7dc89ea6280550f8 Mon Sep 17 00:00:00 2001 From: kout95 Date: Wed, 19 Jan 2022 10:10:13 +0100 Subject: [PATCH 04/37] =?UTF-8?q?Met=20=C3=A0=20jour=20le=20setup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .circleci/config.yml | 103 ++++++++++++++++++++-- .circleci/has-functional-changes.sh | 12 +++ .circleci/is-version-number-acceptable.sh | 25 ++++++ Makefile | 25 +++++- setup.py | 19 ++-- 5 files changed, 166 insertions(+), 18 deletions(-) create mode 100755 .circleci/has-functional-changes.sh create mode 100755 .circleci/is-version-number-acceptable.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 142d8e5..9e9edc7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,27 +2,112 @@ defaults: &defaults working_directory: ~/openfisca-paris docker: - image: python:3.7 + +check_version: &check_version + run: + name: Check version number has been properly updated + command: | + git fetch + .circleci/is-version-number-acceptable.sh + version: 2 jobs: - test: + check_version: + <<: *defaults + steps: + - checkout + - *check_version + + build: <<: *defaults + steps: - checkout + + - restore_cache: + key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} + - run: - name: Upgrade pip - command: pip install --upgrade pip wheel + name: Create a virtualenv + command: | + mkdir -p /tmp/venv/openfisca_paris + python -m venv /tmp/venv/openfisca_paris + echo "source /tmp/venv/openfisca_paris/bin/activate" >> $BASH_ENV + - run: + name: Install test dependencies + command: | + make install-test - run: name: Install dependencies - command: pip install . --upgrade && pip install ".[test]" + command: | + make build + # pip install --editable git+https://github.com/openfisca/openfisca-core.git@BRANCH_NAME#egg=OpenFisca-Core # use a specific branch of OpenFisca-Core + + - save_cache: + key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} + paths: + - /tmp/venv/openfisca_paris + - save_cache: + key: v1-py3-build-{{ .Revision }} + paths: + - dist + + test: + <<: *defaults + + steps: + - checkout + + - restore_cache: + key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} + + - run: + name: Run tests + command: | + source /tmp/venv/openfisca_paris/bin/activate + openfisca test `circleci tests glob "tests/**/*.{yml,yaml}"` --country-package openfisca_france --extensions openfisca_paris + + deploy: + <<: *defaults + + environment: + PYPI_USERNAME: openfisca-bot + # PYPI_PASSWORD: this value is set in CircleCI's web interface; do not set it here, it is a secret! + + steps: + - checkout + + - restore_cache: + key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} + + - restore_cache: + key: v1-py3-build-{{ .Revision }} + - run: - name: Run unit tests - command: openfisca-run-test `circleci tests glob "tests/unittests/**/*.{yaml,yml}" | circleci tests split` --country-package openfisca_france --extensions openfisca_paris + name: Check for functional changes + command: if ! .circleci/has-functional-changes.sh ; then circleci step halt ; fi + - run: - name: Run specific tests - command: openfisca-run-test `circleci tests glob "tests/*.{yaml,yml}" | circleci tests split` --country-package openfisca_france --extensions openfisca_paris + name: Upload a Python package to Pypi + command: | + source /tmp/venv/openfisca_paris/bin/activate + twine upload dist/* --username $PYPI_USERNAME --password $PYPI_PASSWORD workflows: version: 2 test: jobs: - - test + - check_version + - build + - test: + requires: + - build + deploy: + jobs: + - build + - deploy: + requires: + - build + filters: + branches: + only: master diff --git a/.circleci/has-functional-changes.sh b/.circleci/has-functional-changes.sh new file mode 100755 index 0000000..4f99029 --- /dev/null +++ b/.circleci/has-functional-changes.sh @@ -0,0 +1,12 @@ +#! /usr/bin/env bash + +IGNORE_DIFF_ON="README.md CONTRIBUTING.md .gitignore .circleci/* .github/* sources_du_droit/*" + +last_tagged_commit=`git describe --tags --abbrev=0 --first-parent` # --first-parent ensures we don't follow tags not published in master through an unlikely intermediary merge commit + +if git diff-index --name-only --exit-code $last_tagged_commit -- . `echo " $IGNORE_DIFF_ON" | sed 's/ / :(exclude)/g'` # Check if any file that has not be listed in IGNORE_DIFF_ON has changed since the last tag was published. +then + echo "No functional changes detected." + exit 1 +else echo "The functional files above were changed." +fi diff --git a/.circleci/is-version-number-acceptable.sh b/.circleci/is-version-number-acceptable.sh new file mode 100755 index 0000000..be9bb3a --- /dev/null +++ b/.circleci/is-version-number-acceptable.sh @@ -0,0 +1,25 @@ +#! /usr/bin/env bash + +if [[ $CIRCLE_BRANCH == master ]] +then + echo "No need for a version check on master." + exit 0 +fi + +if ! $(dirname "$BASH_SOURCE")/has-functional-changes.sh +then + echo "No need for a version update." + exit 0 +fi + +current_version=`python setup.py --version` + +if git rev-parse --verify --quiet $current_version +then + echo "Version $current_version already exists in commit:" + git --no-pager log -1 $current_version + echo + echo "Update the version number in setup.py before merging this branch into master." + echo "Look at the CONTRIBUTING.md file to learn how the version number should be updated." + exit 1 +fi diff --git a/Makefile b/Makefile index f9ee267..609a983 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,25 @@ clean: rm -rf build dist find . -name '*.pyc' -exec rm \{\} \; -install: - pip install --upgrade pip wheel - pip install --editable .[test] --upgrade +deps: + pip install --upgrade pip build twine + +install-test: + pip install --editable ".[test]" + +install: deps + @# Install OpenFisca-France-Local for development. + @# `make install` installs the editable version of OpenFisca-France-Local. + @# This allows contributors to test as they code. + pip install --editable . --upgrade + +build: clean deps + @# Install OpenFisca-France-Local for deployment and publishing. + @# `make build` allows us to be be sure tests are run against the packaged version + @# of OpenFisca-France-Local, the same we put in the hands of users and reusers. + python -m build + pip uninstall --yes openfisca-france-local + find dist -name "*.whl" -exec pip install {} \; + +test: + openfisca test tests --country-package openfisca_france --extension openfisca_paris diff --git a/setup.py b/setup.py index c40734b..b9c2202 100644 --- a/setup.py +++ b/setup.py @@ -4,9 +4,21 @@ setup( name="Openfisca-Paris", version="3.1.0", + author="OpenFisca Team", + author_email="contact@openfisca.fr", + classifiers = [ + "Development Status :: 5 - Production/Stable", + "License :: OSI Approved :: GNU Affero General Public License v3", + "Operating System :: POSIX", + "Programming Language :: Python", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Topic :: Scientific/Engineering :: Information Analysis", + ], description="Plugin OpenFisca pour les aides sociales de la mairie de Paris", + keywords="benefit france paris microsimulation social tax", license="http://www.fsf.org/licensing/licenses/agpl-3.0.html", - author="Mairie de Paris, Incubateur de Services Numériques (SGMAP)", + packages=find_packages(), include_package_data=True, install_requires=[ @@ -19,9 +31,4 @@ 'pytest >= 5.4.2' ] }, - classifiers=[ - "Programming Language :: Python", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3.7", - ] ) From 2ccf08e66128d4e4e4f38e725b57588329595af0 Mon Sep 17 00:00:00 2001 From: kout95 Date: Wed, 19 Jan 2022 11:43:59 +0100 Subject: [PATCH 05/37] =?UTF-8?q?Met=20=C3=A0=20jour=20le=20workflow.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/has-functional-changes.sh | 12 +++ .github/is-version-number-acceptable.sh | 25 +++++ .github/publish-git-tag.sh | 4 + .github/workflows/workflow.yml | 118 ++++++++++++++++++++++++ 4 files changed, 159 insertions(+) create mode 100755 .github/has-functional-changes.sh create mode 100755 .github/is-version-number-acceptable.sh create mode 100644 .github/publish-git-tag.sh create mode 100644 .github/workflows/workflow.yml diff --git a/.github/has-functional-changes.sh b/.github/has-functional-changes.sh new file mode 100755 index 0000000..48f9780 --- /dev/null +++ b/.github/has-functional-changes.sh @@ -0,0 +1,12 @@ +#! /usr/bin/env bash + +IGNORE_DIFF_ON="README.md CONTRIBUTING.md Makefile .gitignore .github/*" + +last_tagged_commit=`git describe --tags --abbrev=0 --first-parent` # --first-parent ensures we don't follow tags not published in master through an unlikely intermediary merge commit + +if git diff-index --name-only --exit-code $last_tagged_commit -- . `echo " $IGNORE_DIFF_ON" | sed 's/ / :(exclude)/g'` # Check if any file that has not be listed in IGNORE_DIFF_ON has changed since the last tag was published. +then + echo "No functional changes detected." + exit 1 +else echo "The functional files above were changed." +fi diff --git a/.github/is-version-number-acceptable.sh b/.github/is-version-number-acceptable.sh new file mode 100755 index 0000000..4d673f2 --- /dev/null +++ b/.github/is-version-number-acceptable.sh @@ -0,0 +1,25 @@ +#! /usr/bin/env bash + +if [[ ${GITHUB_REF#refs/heads/} == master ]] +then + echo "No need for a version check on master." + exit 0 +fi + +if ! $(dirname "$BASH_SOURCE")/has-functional-changes.sh +then + echo "No need for a version update." + exit 0 +fi + +current_version=`python setup.py --version` + +if git rev-parse --verify --quiet $current_version +then + echo "Version $current_version already exists in commit:" + git --no-pager log -1 $current_version + echo + echo "Update the version number in setup.py before merging this branch into master." + echo "Look at the CONTRIBUTING.md file to learn how the version number should be updated." + exit 1 +fi diff --git a/.github/publish-git-tag.sh b/.github/publish-git-tag.sh new file mode 100644 index 0000000..4450357 --- /dev/null +++ b/.github/publish-git-tag.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env bash + +git tag `python setup.py --version` +git push --tags # update the repository version diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml new file mode 100644 index 0000000..2c77e99 --- /dev/null +++ b/.github/workflows/workflow.yml @@ -0,0 +1,118 @@ +name: OpenFisca Paris + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7.12 + - name: Cache build + id: restore-build + uses: actions/cache@v2 + with: + path: ${{ env.pythonLocation }} + key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + restore-keys: | # in case of a cache miss (systematically unless the same commit is built repeatedly), the keys below will be used to restore dependencies from previous builds, and the cache will be stored at the end of the job, making up-to-date dependencies available for all jobs of the workflow; see more at https://docs.github.com/en/actions/advanced-guides/caching-dependencies-to-speed-up-workflows#example-using-the-cache-action + build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }} + build-${{ env.pythonLocation }}- + - name: Install test dependancies + run: make install-test + - name: Build package + run: make build + - name: Cache release + id: restore-release + uses: actions/cache@v2 + with: + path: dist + key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + test-yaml: + runs-on: ubuntu-latest + needs: [ build ] + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7.12 + - name: Cache build + id: restore-build + uses: actions/cache@v2 + with: + path: ${{ env.pythonLocation }} + key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + - name: Run YAML test + run: | + openfisca test tests --country-package openfisca_france --extensions openfisca_paris + + check-version: + runs-on: ubuntu-latest + needs: [ test-yaml ] # Last job to run + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Fetch all the tags + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7.12 + - name: Check version number has been properly updated + run: "${GITHUB_WORKSPACE}/.github/is-version-number-acceptable.sh" + + # GitHub Actions does not have a halt job option, to stop from deploying if no functional changes were found. + # We build a separate job to substitute the halt option. + # The `deploy` job is dependent on the output of the `check-for-functional-changes` job. + check-for-functional-changes: + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/master' # Only triggered for the `master` branch + needs: [ check-version ] + outputs: + status: ${{ steps.stop-early.outputs.status }} + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Fetch all the tags + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7.12 + - id: stop-early + run: if "${GITHUB_WORKSPACE}/.github/has-functional-changes.sh" ; then echo "::set-output name=status::success" ; fi + + deploy: + runs-on: ubuntu-latest + needs: [ check-for-functional-changes ] + if: needs.check-for-functional-changes.outputs.status == 'success' + env: + PYPI_USERNAME: openfisca-bot + PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Fetch all the tags + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7.12 + - name: Cache build + id: restore-build + uses: actions/cache@v2 + with: + path: ${{ env.pythonLocation }} + key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + - name: Cache release + id: restore-release + uses: actions/cache@v2 + with: + path: dist + key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + - name: Upload a Python package to PyPi + run: twine upload dist/* --username $PYPI_USERNAME --password $PYPI_PASSWORD + - name: Publish a git tag + run: "${GITHUB_WORKSPACE}/.github/publish-git-tag.sh" From 4b6dd5ad7a1a3084d804372f4f371d92eac52fa5 Mon Sep 17 00:00:00 2001 From: kout95 Date: Wed, 19 Jan 2022 14:00:09 +0100 Subject: [PATCH 06/37] Supprime circle ci --- .circleci/config.yml | 113 ---------------------- .circleci/has-functional-changes.sh | 12 --- .circleci/is-version-number-acceptable.sh | 25 ----- 3 files changed, 150 deletions(-) delete mode 100644 .circleci/config.yml delete mode 100755 .circleci/has-functional-changes.sh delete mode 100755 .circleci/is-version-number-acceptable.sh diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 9e9edc7..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,113 +0,0 @@ -defaults: &defaults - working_directory: ~/openfisca-paris - docker: - - image: python:3.7 - -check_version: &check_version - run: - name: Check version number has been properly updated - command: | - git fetch - .circleci/is-version-number-acceptable.sh - -version: 2 -jobs: - check_version: - <<: *defaults - steps: - - checkout - - *check_version - - build: - <<: *defaults - - steps: - - checkout - - - restore_cache: - key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} - - - run: - name: Create a virtualenv - command: | - mkdir -p /tmp/venv/openfisca_paris - python -m venv /tmp/venv/openfisca_paris - echo "source /tmp/venv/openfisca_paris/bin/activate" >> $BASH_ENV - - run: - name: Install test dependencies - command: | - make install-test - - run: - name: Install dependencies - command: | - make build - # pip install --editable git+https://github.com/openfisca/openfisca-core.git@BRANCH_NAME#egg=OpenFisca-Core # use a specific branch of OpenFisca-Core - - - save_cache: - key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} - paths: - - /tmp/venv/openfisca_paris - - save_cache: - key: v1-py3-build-{{ .Revision }} - paths: - - dist - - test: - <<: *defaults - - steps: - - checkout - - - restore_cache: - key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} - - - run: - name: Run tests - command: | - source /tmp/venv/openfisca_paris/bin/activate - openfisca test `circleci tests glob "tests/**/*.{yml,yaml}"` --country-package openfisca_france --extensions openfisca_paris - - deploy: - <<: *defaults - - environment: - PYPI_USERNAME: openfisca-bot - # PYPI_PASSWORD: this value is set in CircleCI's web interface; do not set it here, it is a secret! - - steps: - - checkout - - - restore_cache: - key: v1-py3-deps-{{ .Branch }}-{{ checksum "setup.py" }} - - - restore_cache: - key: v1-py3-build-{{ .Revision }} - - - run: - name: Check for functional changes - command: if ! .circleci/has-functional-changes.sh ; then circleci step halt ; fi - - - run: - name: Upload a Python package to Pypi - command: | - source /tmp/venv/openfisca_paris/bin/activate - twine upload dist/* --username $PYPI_USERNAME --password $PYPI_PASSWORD - -workflows: - version: 2 - test: - jobs: - - check_version - - build - - test: - requires: - - build - deploy: - jobs: - - build - - deploy: - requires: - - build - filters: - branches: - only: master diff --git a/.circleci/has-functional-changes.sh b/.circleci/has-functional-changes.sh deleted file mode 100755 index 4f99029..0000000 --- a/.circleci/has-functional-changes.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /usr/bin/env bash - -IGNORE_DIFF_ON="README.md CONTRIBUTING.md .gitignore .circleci/* .github/* sources_du_droit/*" - -last_tagged_commit=`git describe --tags --abbrev=0 --first-parent` # --first-parent ensures we don't follow tags not published in master through an unlikely intermediary merge commit - -if git diff-index --name-only --exit-code $last_tagged_commit -- . `echo " $IGNORE_DIFF_ON" | sed 's/ / :(exclude)/g'` # Check if any file that has not be listed in IGNORE_DIFF_ON has changed since the last tag was published. -then - echo "No functional changes detected." - exit 1 -else echo "The functional files above were changed." -fi diff --git a/.circleci/is-version-number-acceptable.sh b/.circleci/is-version-number-acceptable.sh deleted file mode 100755 index be9bb3a..0000000 --- a/.circleci/is-version-number-acceptable.sh +++ /dev/null @@ -1,25 +0,0 @@ -#! /usr/bin/env bash - -if [[ $CIRCLE_BRANCH == master ]] -then - echo "No need for a version check on master." - exit 0 -fi - -if ! $(dirname "$BASH_SOURCE")/has-functional-changes.sh -then - echo "No need for a version update." - exit 0 -fi - -current_version=`python setup.py --version` - -if git rev-parse --verify --quiet $current_version -then - echo "Version $current_version already exists in commit:" - git --no-pager log -1 $current_version - echo - echo "Update the version number in setup.py before merging this branch into master." - echo "Look at the CONTRIBUTING.md file to learn how the version number should be updated." - exit 1 -fi From 0e9d2ba8ab56d38cb4ce7ed5253c1da9a8fc64bd Mon Sep 17 00:00:00 2001 From: Kout95 <65901733+Kout95@users.noreply.github.com> Date: Wed, 19 Jan 2022 14:50:39 +0100 Subject: [PATCH 07/37] Update Makefile --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 609a983..52bda21 100644 --- a/Makefile +++ b/Makefile @@ -15,17 +15,17 @@ install-test: pip install --editable ".[test]" install: deps - @# Install OpenFisca-France-Local for development. - @# `make install` installs the editable version of OpenFisca-France-Local. + @# Install OpenFisca-Paris for development. + @# `make install` installs the editable version of OpenFisca-Paris. @# This allows contributors to test as they code. pip install --editable . --upgrade build: clean deps - @# Install OpenFisca-France-Local for deployment and publishing. + @# Install OpenFisca-Paris for deployment and publishing. @# `make build` allows us to be be sure tests are run against the packaged version - @# of OpenFisca-France-Local, the same we put in the hands of users and reusers. + @# of OpenFisca-Paris, the same we put in the hands of users and reusers. python -m build - pip uninstall --yes openfisca-france-local + pip uninstall --yes openfisca-paris find dist -name "*.whl" -exec pip install {} \; test: From a23c6adef5a5e57766513bcf2a673a929aab7f9f Mon Sep 17 00:00:00 2001 From: kout95 Date: Thu, 20 Jan 2022 16:41:57 +0100 Subject: [PATCH 08/37] =?UTF-8?q?Evite=20=C3=A0=20la=20ci=20de=20tourner?= =?UTF-8?q?=20deux=20fois?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/workflow.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 2c77e99..b69dab6 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -1,6 +1,10 @@ name: OpenFisca Paris -on: [push, pull_request] +on: + push: + branches: + - master + pull_request: jobs: build: From 030d6fed008feda33916e55f35af785be70a128e Mon Sep 17 00:00:00 2001 From: kout95 Date: Thu, 20 Jan 2022 17:09:43 +0100 Subject: [PATCH 09/37] =?UTF-8?q?Augmente=20le=20num=C3=A9ro=20de=20versio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b9c2202..99c82eb 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.1.0", + version="3.1.1", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers = [ From 51b8d0e792caf78184cb261abf2ec137e0c4be05 Mon Sep 17 00:00:00 2001 From: Cugniere <16650011+Cugniere@users.noreply.github.com> Date: Thu, 20 Jan 2022 17:47:27 +0100 Subject: [PATCH 10/37] =?UTF-8?q?fix:=20rend=20le=20script=20de=20publicat?= =?UTF-8?q?ion=20de=20tag=20ex=C3=A9cutable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/publish-git-tag.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 .github/publish-git-tag.sh diff --git a/.github/publish-git-tag.sh b/.github/publish-git-tag.sh old mode 100644 new mode 100755 From 4857d0b39d87e683a4026091a47547eb1e6e8520 Mon Sep 17 00:00:00 2001 From: Kout95 <65901733+Kout95@users.noreply.github.com> Date: Fri, 4 Feb 2022 10:51:56 +0100 Subject: [PATCH 11/37] =?UTF-8?q?Met=20=C3=A0=20jour=20openfisca-france=20?= =?UTF-8?q?=C3=A0=20la=20version=20107=20(#131)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Met à jour openfisca-france à la version 107 * Augmente la version dans le fichier setup.py --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 99c82eb..ccbb39f 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.1.1", + version="3.2.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers = [ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 104' + 'OpenFisca-France >= 102, < 108' ], extras_require = { 'test': [ From 53b8da1a60a4d25850535ed78677f084c71555ec Mon Sep 17 00:00:00 2001 From: Kout95 <65901733+Kout95@users.noreply.github.com> Date: Mon, 21 Feb 2022 09:02:14 +0100 Subject: [PATCH 12/37] =?UTF-8?q?Met=20=C3=A0=20jour=20openfisca-france=20?= =?UTF-8?q?=C3=A0=20la=20version=20111.1=20(#132)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index ccbb39f..9fd0bf7 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.2.0", + version="3.3.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers = [ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 108' + 'OpenFisca-France >= 102, < 112' ], extras_require = { 'test': [ From 923d7f60a8192075e2ab285610182e2735189e89 Mon Sep 17 00:00:00 2001 From: Kout95 <65901733+Kout95@users.noreply.github.com> Date: Thu, 21 Apr 2022 08:40:38 +0200 Subject: [PATCH 13/37] =?UTF-8?q?Met=20=C3=A0=20jour=20openfisca-france=20?= =?UTF-8?q?=C3=A0=20la=20version=20116=20(#133)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 9fd0bf7..e7838f2 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.3.0", + version="3.4.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers = [ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 112' + 'OpenFisca-France >= 102, < 117' ], extras_require = { 'test': [ From 93001845671bfaec3a4c3244c8a182d82f80c421 Mon Sep 17 00:00:00 2001 From: Cugniere <16650011+Cugniere@users.noreply.github.com> Date: Mon, 10 Oct 2022 11:03:49 +0200 Subject: [PATCH 14/37] =?UTF-8?q?Met=20=C3=A0=20jour=20Openfisca-France=20?= =?UTF-8?q?en=20version=20117?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index e7838f2..557292e 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.4.0", + version="3.5.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers = [ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 117' + 'OpenFisca-France >= 102, < 118' ], extras_require = { 'test': [ From 3c52c25e329c574cf2b5d504535115245e8686a7 Mon Sep 17 00:00:00 2001 From: cugniere <16650011+Cugniere@users.noreply.github.com> Date: Wed, 4 Jan 2023 10:19:37 +0100 Subject: [PATCH 15/37] =?UTF-8?q?update:=20met=20=C3=A0=20jour=20Openfisca?= =?UTF-8?q?=20France=20en=20version=20136?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 557292e..c8436d6 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.5.0", + version="3.6.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers = [ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 118' + 'OpenFisca-France >= 102, < 137' ], extras_require = { 'test': [ From f8e9cee55da319f19a343e1b0663e4f51ceadb95 Mon Sep 17 00:00:00 2001 From: cugniere <16650011+Cugniere@users.noreply.github.com> Date: Wed, 4 Jan 2023 10:22:39 +0100 Subject: [PATCH 16/37] =?UTF-8?q?fix:=20utilise=20la=20derni=C3=A8re=20ver?= =?UTF-8?q?sion=20de=20Python=203.7=20disponible=20dans=20Github=20Actions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/workflow.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index b69dab6..d0e244f 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7.12 + python-version: 3.7 - name: Cache build id: restore-build uses: actions/cache@v2 @@ -65,7 +65,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7.12 + python-version: 3.7 - name: Check version number has been properly updated run: "${GITHUB_WORKSPACE}/.github/is-version-number-acceptable.sh" @@ -85,7 +85,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7.12 + python-version: 3.7 - id: stop-early run: if "${GITHUB_WORKSPACE}/.github/has-functional-changes.sh" ; then echo "::set-output name=status::success" ; fi @@ -103,7 +103,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7.12 + python-version: 3.7 - name: Cache build id: restore-build uses: actions/cache@v2 From 6ec8a438ffda5e6654c7c3f57620f87062d8f5d2 Mon Sep 17 00:00:00 2001 From: cugniere <16650011+Cugniere@users.noreply.github.com> Date: Wed, 4 Jan 2023 10:28:41 +0100 Subject: [PATCH 17/37] =?UTF-8?q?fix:=20utilise=20la=20derni=C3=A8re=20ver?= =?UTF-8?q?sion=20de=20Python=203.7=20disponible=20dans=20Github=20Actions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index d0e244f..e7443fe 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -44,7 +44,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7.12 + python-version: 3.7 - name: Cache build id: restore-build uses: actions/cache@v2 From 75a93851b31862a74ae8069cc065c5469e280cdc Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Mon, 6 Feb 2023 11:29:39 +0100 Subject: [PATCH 18/37] =?UTF-8?q?Mise=20=C3=A0=20jour=20OpenFisca-France?= =?UTF-8?q?=20vers=20version=20142.0.1=20(#137)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Détails La version d'Openfisca France utilisée sur ce repository était la 139 alors que la version actuelle d'Openfisca France est la 142.0.1. Cette PR met à jour la version d'Openfisca France utilisée par ce repository en 142.0.1. --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index c8436d6..6ee1715 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.6.0", + version="3.6.1", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers = [ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 137' + 'OpenFisca-France >= 141.0.0, < 142.0.1', ], extras_require = { 'test': [ From 90fea8082501f6985e4c6285042ee287e6e95f31 Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Mon, 6 Feb 2023 12:00:39 +0100 Subject: [PATCH 19/37] Fix dependencies requirements (#138) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix dependencies requirements * Mise à jour numero de version --- setup.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index 6ee1715..94731ca 100644 --- a/setup.py +++ b/setup.py @@ -3,10 +3,10 @@ setup( name="Openfisca-Paris", - version="3.6.1", + version="3.6.2", author="OpenFisca Team", author_email="contact@openfisca.fr", - classifiers = [ + classifiers=[ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: POSIX", @@ -14,7 +14,7 @@ "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Information Analysis", - ], + ], description="Plugin OpenFisca pour les aides sociales de la mairie de Paris", keywords="benefit france paris microsimulation social tax", license="http://www.fsf.org/licensing/licenses/agpl-3.0.html", @@ -23,12 +23,12 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 141.0.0, < 142.0.1', + 'OpenFisca-France >= 142.0.1, < 143', ], - extras_require = { + extras_require={ 'test': [ 'nose', 'pytest >= 5.4.2' - ] + ] }, ) From 07f55b4efd2246cf5f68ccfe2fa0eaba3fbfc3a0 Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Tue, 14 Feb 2023 09:41:21 +0100 Subject: [PATCH 20/37] =?UTF-8?q?=20Fix=20version=20minimale=20de=20la=20d?= =?UTF-8?q?=C3=A9pendance=20openfisca-france=20#139?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Lors de la release ([v3.6.1](https://github.com/openfisca/openfisca-paris/pull/137/)) nous avons mis à jour la dépendance `openfisca-france` et augmenté la version minimale requise sans faire assez de tests. Ce n’était pas nécessaire, cette PR a pour but de remettre la version `102` comme version minimale puisqu’elle ne semble pas causer problème. --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 94731ca..2b846be 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.6.2", + version="3.6.3", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers=[ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 142.0.1, < 143', + 'OpenFisca-France >= 102, < 143', ], extras_require={ 'test': [ From b17ae326a93677de6837f267f5cb7b6cff023e17 Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Mon, 3 Apr 2023 17:33:55 +0200 Subject: [PATCH 21/37] =?UTF-8?q?Met=20=C3=A0=20jour=20openfisca-france=20?= =?UTF-8?q?en=20v145=20(#141)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 2b846be..85614e2 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.6.3", + version="3.7.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers=[ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 143', + 'OpenFisca-France >= 102, < 146', ], extras_require={ 'test': [ From 633d5bc6237942a53552163f06af0b9f3cd64510 Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Tue, 4 Apr 2023 10:52:03 +0200 Subject: [PATCH 22/37] =?UTF-8?q?Ajout=20pipeline=20de=20test=20pour=20la?= =?UTF-8?q?=20=20version=20minimale=20des=20d=C3=A9pendance=20OpenFisca=20?= =?UTF-8?q?(#140)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ajoute un pipeline de build et de test à la CI pour tester le logiciel avec les versions minimale des dépendances `OpenFisca-France` et `OpenFisca-Core`. --- .github/get_minimal_version.py | 8 ++++++++ .github/workflows/workflow.yml | 23 ++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 .github/get_minimal_version.py diff --git a/.github/get_minimal_version.py b/.github/get_minimal_version.py new file mode 100644 index 0000000..8f7f62f --- /dev/null +++ b/.github/get_minimal_version.py @@ -0,0 +1,8 @@ +import re + + +with open('./setup.py') as file: + for line in file: + version = re.search(r'(Core|France)\s*>=\s*([\d\.]*)', line) + if version: + print(f'Openfisca-{version[1]}=={version[2]}') diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index e7443fe..0f731ab 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -9,6 +9,9 @@ on: jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + openfisca-dependencies: [minimal, maximal] steps: - name: Checkout uses: actions/checkout@v2 @@ -21,7 +24,7 @@ jobs: uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} - key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} restore-keys: | # in case of a cache miss (systematically unless the same commit is built repeatedly), the keys below will be used to restore dependencies from previous builds, and the cache will be stored at the end of the job, making up-to-date dependencies available for all jobs of the workflow; see more at https://docs.github.com/en/actions/advanced-guides/caching-dependencies-to-speed-up-workflows#example-using-the-cache-action build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }} build-${{ env.pythonLocation }}- @@ -29,14 +32,21 @@ jobs: run: make install-test - name: Build package run: make build + - name: Minimal version + if: matrix.openfisca-dependencies == 'minimal' + run: | # Installs the OpenFisca dependencies minimal version from setup.py + pip install $(python ${GITHUB_WORKSPACE}/.github/get_minimal_version.py) - name: Cache release id: restore-release uses: actions/cache@v2 with: path: dist - key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} test-yaml: runs-on: ubuntu-latest + strategy: + matrix: + openfisca-dependencies: [minimal, maximal] needs: [ build ] steps: - name: Checkout @@ -50,7 +60,7 @@ jobs: uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} - key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} - name: Run YAML test run: | openfisca test tests --country-package openfisca_france --extensions openfisca_paris @@ -91,6 +101,9 @@ jobs: deploy: runs-on: ubuntu-latest + strategy: + matrix: + openfisca-dependencies: [maximal] needs: [ check-for-functional-changes ] if: needs.check-for-functional-changes.outputs.status == 'success' env: @@ -109,13 +122,13 @@ jobs: uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} - key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} - name: Cache release id: restore-release uses: actions/cache@v2 with: path: dist - key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }} + key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} - name: Upload a Python package to PyPi run: twine upload dist/* --username $PYPI_USERNAME --password $PYPI_PASSWORD - name: Publish a git tag From 159f3d1eacafb61724bd6dd46469a22773be9ddf Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Tue, 25 Apr 2023 16:38:22 +0200 Subject: [PATCH 23/37] =?UTF-8?q?Met=20=C3=A0=20jour=20OpenFisca-france=20?= =?UTF-8?q?en=20version=20146=20(#142)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Permet à OpenFisca-france-paris de fonctionner avec la version 146 d'OpenFisca-france. --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 85614e2..5d0ca1a 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.7.0", + version="3.8.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers=[ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 146', + 'OpenFisca-France >= 102, < 147', ], extras_require={ 'test': [ From 5be64cc16e3c4b7c14413de4e1557f26c08189a5 Mon Sep 17 00:00:00 2001 From: cugniere <16650011+Cugniere@users.noreply.github.com> Date: Thu, 8 Jun 2023 10:23:01 +0200 Subject: [PATCH 24/37] =?UTF-8?q?update:=20met=20=C3=A0=20jour=20openfisca?= =?UTF-8?q?=20france=20en=20version=20147?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 5d0ca1a..bfb9635 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="3.8.0", + version="3.9.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers=[ @@ -23,7 +23,7 @@ include_package_data=True, install_requires=[ 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 147', + 'OpenFisca-France >= 102, < 148', ], extras_require={ 'test': [ From 5d2c1ffda1d0bedb1c2efc44ab5bf1fb3861bf89 Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Tue, 27 Jun 2023 09:58:06 +0200 Subject: [PATCH 25/37] =?UTF-8?q?Met=20=C3=A0=20jour=20python=20et=20toute?= =?UTF-8?q?s=20les=20d=C3=A9pendances=20(#145)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description ## Breaking changes - Met à jour la version minimale de `python` de `3.7` vers python `3.9` - Met à jour la version minimale d'`openfisca-core` de `35.2.0` vers `40.0.1` - Met à jour la version minimale d'`openfisca-france`de `102` vers `149.1.1` --- .github/workflows/workflow.yml | 19 ++++++++++--------- setup.py | 15 ++++++++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 0f731ab..33d80c6 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -8,17 +8,18 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 strategy: matrix: openfisca-dependencies: [minimal, maximal] + python-version: ["3.9.9", "3.10.6"] steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: ${{ matrix.python-version }} - name: Cache build id: restore-build uses: actions/cache@v2 @@ -43,7 +44,7 @@ jobs: path: dist key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} test-yaml: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 strategy: matrix: openfisca-dependencies: [minimal, maximal] @@ -54,7 +55,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: 3.9.9 - name: Cache build id: restore-build uses: actions/cache@v2 @@ -66,7 +67,7 @@ jobs: openfisca test tests --country-package openfisca_france --extensions openfisca_paris check-version: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 needs: [ test-yaml ] # Last job to run steps: - uses: actions/checkout@v2 @@ -75,7 +76,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: 3.9.9 - name: Check version number has been properly updated run: "${GITHUB_WORKSPACE}/.github/is-version-number-acceptable.sh" @@ -83,7 +84,7 @@ jobs: # We build a separate job to substitute the halt option. # The `deploy` job is dependent on the output of the `check-for-functional-changes` job. check-for-functional-changes: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 if: github.ref == 'refs/heads/master' # Only triggered for the `master` branch needs: [ check-version ] outputs: @@ -95,12 +96,12 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: 3.9.9 - id: stop-early run: if "${GITHUB_WORKSPACE}/.github/has-functional-changes.sh" ; then echo "::set-output name=status::success" ; fi deploy: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 strategy: matrix: openfisca-dependencies: [maximal] diff --git a/setup.py b/setup.py index bfb9635..b0fb81c 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -from setuptools import setup, find_packages +from setuptools import setup, find_namespace_packages setup( name="Openfisca-Paris", - version="3.9.0", + version="4.0.0", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers=[ @@ -11,19 +11,20 @@ "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: POSIX", "Programming Language :: Python", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', "Topic :: Scientific/Engineering :: Information Analysis", ], description="Plugin OpenFisca pour les aides sociales de la mairie de Paris", keywords="benefit france paris microsimulation social tax", license="http://www.fsf.org/licensing/licenses/agpl-3.0.html", - packages=find_packages(), + packages=find_namespace_packages(), include_package_data=True, install_requires=[ - 'OpenFisca-Core >= 35.2.0, < 36', - 'OpenFisca-France >= 102, < 148', + 'OpenFisca-Core >= 40.0.1, < 41', + 'OpenFisca-France >= 149.1.1, < 150', ], extras_require={ 'test': [ From a0e5737ef00a736c53dc212a617e6c6365d5b345 Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Tue, 27 Jun 2023 12:22:16 +0200 Subject: [PATCH 26/37] =?UTF-8?q?Corrige=20l'=C3=A9tape=20deploy=20de=20la?= =?UTF-8?q?=20CI=20-=20twine=20:=20command=20not=20found=20(#146)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description Corrige le numéro de version de version de python utilisée dans l'étape de deploy qui cause l'erreur `twine : command not found` --- .github/workflows/workflow.yml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 33d80c6..b157997 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -117,7 +117,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.7 + python-version: 3.9.9 - name: Cache build id: restore-build uses: actions/cache@v2 diff --git a/setup.py b/setup.py index b0fb81c..a4534b5 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="4.0.0", + version="4.0.1", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers=[ From 47cba7998de1fec72d9bfe639ea5793dcce8250b Mon Sep 17 00:00:00 2001 From: Allan-CodeWorks <101192539+Allan-CodeWorks@users.noreply.github.com> Date: Tue, 27 Jun 2023 14:33:18 +0200 Subject: [PATCH 27/37] =?UTF-8?q?Met=20=C3=A0=20jours=20le=20workflow=20CI?= =?UTF-8?q?=20avec=20les=20derni=C3=A8res=20versions=20des=20actions=20git?= =?UTF-8?q?hub=20(#147)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description : `cache@v2` -> `cache@v3` `setup-python@v2` -> `setup-python@v4` `checkout@v2` -> `checkout@v3` --- .github/workflows/workflow.yml | 30 +++++++++++++++--------------- setup.py | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index b157997..0e3ed92 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -15,14 +15,14 @@ jobs: python-version: ["3.9.9", "3.10.6"] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Cache build id: restore-build - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ env.pythonLocation }} key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} @@ -39,7 +39,7 @@ jobs: pip install $(python ${GITHUB_WORKSPACE}/.github/get_minimal_version.py) - name: Cache release id: restore-release - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: dist key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} @@ -51,14 +51,14 @@ jobs: needs: [ build ] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.9.9 - name: Cache build id: restore-build - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ env.pythonLocation }} key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} @@ -70,11 +70,11 @@ jobs: runs-on: ubuntu-20.04 needs: [ test-yaml ] # Last job to run steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 # Fetch all the tags - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.9.9 - name: Check version number has been properly updated @@ -90,11 +90,11 @@ jobs: outputs: status: ${{ steps.stop-early.outputs.status }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 # Fetch all the tags - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.9.9 - id: stop-early @@ -111,22 +111,22 @@ jobs: PYPI_USERNAME: openfisca-bot PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 # Fetch all the tags - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.9.9 - name: Cache build id: restore-build - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ env.pythonLocation }} key: build-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} - name: Cache release id: restore-release - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: dist key: release-${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ github.sha }}-${{ matrix.openfisca-dependencies }} diff --git a/setup.py b/setup.py index a4534b5..b26834e 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name="Openfisca-Paris", - version="4.0.1", + version="4.0.2", author="OpenFisca Team", author_email="contact@openfisca.fr", classifiers=[ From d2aad5ca3b4a2c6dec1339069d03166df122c339 Mon Sep 17 00:00:00 2001 From: Amine Date: Fri, 20 Dec 2019 09:53:50 +0100 Subject: [PATCH 28/37] =?UTF-8?q?Revalorisation=20les=20bar=C3=A8mes=20Par?= =?UTF-8?q?is=20Solidaire=20et=20CSP=20=C3=A0=20partir=20du=2001/01/2020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paris_complement_sante.yaml | 4 ++++ .../paris/personnes_agees/psol.yaml | 6 ++++- .../paris_complement_sante.yaml | 22 ++++++++++++++----- .../paris/personnes_handicapees/psol.yaml | 4 ++++ 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/openfisca_paris/parameters/paris/personnes_agees/paris_complement_sante.yaml b/openfisca_paris/parameters/paris/personnes_agees/paris_complement_sante.yaml index 6279054..0f95dc2 100644 --- a/openfisca_paris/parameters/paris/personnes_agees/paris_complement_sante.yaml +++ b/openfisca_paris/parameters/paris/personnes_agees/paris_complement_sante.yaml @@ -12,6 +12,8 @@ plafond: value: 915.0 2019-01-01: value: 980.0 + 2020-01-01: + value: 1015.0 en_couple: unit: currency values: @@ -23,6 +25,8 @@ plafond: value: 1453.0 2019-01-01: value: 1553.0 + 2020-01-01: + value: 1608.0 montant: unit: currency values: diff --git a/openfisca_paris/parameters/paris/personnes_agees/psol.yaml b/openfisca_paris/parameters/paris/personnes_agees/psol.yaml index 8f2610c..82f2618 100644 --- a/openfisca_paris/parameters/paris/personnes_agees/psol.yaml +++ b/openfisca_paris/parameters/paris/personnes_agees/psol.yaml @@ -12,6 +12,8 @@ plafond: value: 945.0 2019-01-01: value: 980.0 + 2020-01-01: + value: 1015.0 couple: unit: currency values: @@ -24,4 +26,6 @@ plafond: 2018-04-01: value: 1498.0 2019-01-01: - value: 1553.0 + value: 1553.0 + 2020-01-01: + value: 1608.0 diff --git a/openfisca_paris/parameters/paris/personnes_handicapees/paris_complement_sante.yaml b/openfisca_paris/parameters/paris/personnes_handicapees/paris_complement_sante.yaml index b63ad55..acfa5ad 100644 --- a/openfisca_paris/parameters/paris/personnes_handicapees/paris_complement_sante.yaml +++ b/openfisca_paris/parameters/paris/personnes_handicapees/paris_complement_sante.yaml @@ -2,15 +2,25 @@ plafond: personne_isolee: unit: currency values: - 2012-01-01: 965.0 - 2019-01-01: 965.0 + 2012-01-01: + value: 965.0 + 2019-01-01: + value: 965.0 + 2020-01-01: + value: 1015.0 en_couple: unit: currency values: - 2012-01-01: 1553.0 - 2019-01-01: 1553.0 + 2012-01-01: + value: 1553.0 + 2019-01-01: + value: 1553.0 + 2020-01-01: + value: 1608.0 montant: unit: currency values: - 2012-01-01: 468.0 - 2019-01-01: 468.0 + 2012-01-01: + value: 468.0 + 2019-01-01: + value: 468.0 diff --git a/openfisca_paris/parameters/paris/personnes_handicapees/psol.yaml b/openfisca_paris/parameters/paris/personnes_handicapees/psol.yaml index 149f8b7..c0deaa6 100644 --- a/openfisca_paris/parameters/paris/personnes_handicapees/psol.yaml +++ b/openfisca_paris/parameters/paris/personnes_handicapees/psol.yaml @@ -10,6 +10,8 @@ plafond: value: 915.0 2019-01-01: value: 965.0 + 2020-01-01: + value: 1015.0 couple: unit: currency values: @@ -23,3 +25,5 @@ plafond: value: 1498.0 2019-01-01: value: 1553.0 + 2020-01-01: + value: 1608.0 From 660eb76d39ce4d1ab81918ec6b2911aa1234970f Mon Sep 17 00:00:00 2001 From: Amine Date: Tue, 18 Feb 2020 16:42:08 +0100 Subject: [PATCH 29/37] =?UTF-8?q?Fiabilisation=20de=20la=20base=20ressourc?= =?UTF-8?q?es=20Paris=20CSP=20handicap=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../paris_complement_sante.py | 17 +-- .../paris_complement_sante.yaml | 102 ++++++++++++- .../paris_complement_sante.yaml | 136 +++++++++++++++++- 3 files changed, 239 insertions(+), 16 deletions(-) diff --git a/openfisca_paris/personnes_handicapees/paris_complement_sante.py b/openfisca_paris/personnes_handicapees/paris_complement_sante.py index cd55d4b..69c2f5b 100644 --- a/openfisca_paris/personnes_handicapees/paris_complement_sante.py +++ b/openfisca_paris/personnes_handicapees/paris_complement_sante.py @@ -8,26 +8,23 @@ class paris_complement_sante_ph_eligibilite(Variable): value_type = bool - entity = Famille + entity = Individu definition_period = MONTH label = u"Éligibilité au Complément Santé Paris pour les personnes handicapées" reference = "Article III.1.2.b.3 du règlement municipal du CASVP" - def formula(famille, period, parameters): - - personne_handicapee = famille.members('paris_personne_handicapee', period) - personnes_handicapees = famille.any(personne_handicapee) + def formula(individu, period, parameters): + personne_handicapee = individu('paris_personne_handicapee', period) - base_ressources = famille('paris_base_ressources_couple', period.last_month) + base_ressources = individu('paris_base_ressources_i', period) param_plafond = parameters(period).paris.personnes_handicapees.paris_complement_sante.plafond - en_couple = famille('en_couple', period) - plafond_1 = where(en_couple, param_plafond.en_couple, param_plafond.personne_isolee) + plafond_1 = param_plafond.personne_isolee param_aah = parameters(period).prestations_sociales.prestations_etat_de_sante.invalidite plafond_2 = param_aah.aah.montant + param_aah.caah.majoration_vie_autonome - return personnes_handicapees * (base_ressources <= max_(plafond_1, plafond_2)) + return personne_handicapee * (base_ressources <= max_(plafond_1, plafond_2)) class paris_complement_sante_ph_montant(Variable): @@ -55,7 +52,7 @@ class paris_complement_sante_ph(Variable): def formula(famille, period, parameters): - eligibilite = famille('paris_complement_sante_ph_eligibilite', period) + eligibilite = famille.demandeur('paris_complement_sante_ph_eligibilite', period) montant = famille('paris_complement_sante_ph_montant', period) return eligibilite * montant diff --git a/tests/unittests/personnes_agees/paris_complement_sante.yaml b/tests/unittests/personnes_agees/paris_complement_sante.yaml index b0aa177..088416f 100644 --- a/tests/unittests/personnes_agees/paris_complement_sante.yaml +++ b/tests/unittests/personnes_agees/paris_complement_sante.yaml @@ -2,7 +2,7 @@ period: 2019-02 input: paris_personne_agee: [false, true, true] - paris_base_ressources_couple: + paris_base_ressources_couple: 2019-01: [980, 980, 981] output: paris_complement_sante_pa_eligibilite: [false, true, false] @@ -12,7 +12,7 @@ input: paris_personne_agee: [false, true, true] en_couple: [true, true, true] - paris_base_ressources_couple: + paris_base_ressources_couple: 2019-01: [1553, 1553, 1554] output: paris_complement_sante_pa_eligibilite: [false, true, false] @@ -33,3 +33,101 @@ paris_complement_sante_pa_montant: [100, 100] output: paris_complement_sante_pa: [100, 0] + +- name: couple, 2 Personnes âgées, droit à CSP + period: 2020-01 + input: + famille: + parents: ['personne1', 'personne2'] + parisien: true + paris_base_ressources_famille: + 2019-12: 0 + menage: + personne_de_reference: personne1 + conjoint: personne2 + statut_occupation_logement: locataire_vide + logement_conventionne: true + depcom: 75012 + loyer: 599 + charges_locatives: 65 + individus: + personne1: + activite: retraite + date_naissance: 1940-06-05 + retraite_imposable: + 2019-12: 806.51 + personne2: + activite: retraite + date_naissance: 1943-06-05 + retraite_imposable: + 2019-12: 578.06 + foyer_fiscal: + declarants: [personne1, personne2] + output: + paris_complement_sante_pa: 468 + +- name: couple, une PA et une PH, droit à CSP + period: 2020-01 + input: + famille: + parents: ['personne1', 'personne2'] + parisien: true + paris_base_ressources_famille: + 2019-12: 0 + aide_logement: + 2019-12: 170 + menage: + personne_de_reference: personne1 + conjoint: personne2 + statut_occupation_logement: locataire_vide + logement_conventionne: true + depcom: 75012 + loyer: 599 + charges_locatives: 65 + individus: + personne1: + activite: retraite + date_naissance: 1940-06-05 + retraite_imposable: + 2019-12: 806.51 + personne2: + date_naissance: 1963-08-05 + handicap: true + aah: + 2019-12: 723 + foyer_fiscal: + declarants: [personne1, personne2] + output: + paris_complement_sante_pa: 468 + +- name: couple, une PA + une personne non ouvre droit, droit à CSP + period: 2020-01 + input: + famille: + parents: ['personne1', 'personne2'] + parisien: true + paris_base_ressources_famille: + 2019-12: 0 + aide_logement: + 2019-12: 170 + cmu_c: false + menage: + personne_de_reference: personne1 + conjoint: personne2 + statut_occupation_logement: locataire_vide + logement_conventionne: true + depcom: 75012 + loyer: 659 + charges_locatives: 45 + individus: + personne1: + activite: retraite + date_naissance: 1950-06-05 + retraite_imposable: + 2019-12: 1336.38 + personne2: + date_naissance: 1963-08-05 + foyer_fiscal: + declarants: [personne1, personne2] + output: + paris_complement_sante_pa: 468 diff --git a/tests/unittests/personnes_handicapees/paris_complement_sante.yaml b/tests/unittests/personnes_handicapees/paris_complement_sante.yaml index 7f51e2a..0095315 100644 --- a/tests/unittests/personnes_handicapees/paris_complement_sante.yaml +++ b/tests/unittests/personnes_handicapees/paris_complement_sante.yaml @@ -2,8 +2,7 @@ period: 2019-02 input: paris_personne_handicapee: [false, true, true] - paris_base_ressources_couple: - 2019-01: [965, 965, 966] + paris_base_ressources_i: [965, 965, 966] output: paris_complement_sante_ph_eligibilite: [false, true, false] @@ -12,8 +11,7 @@ input: paris_personne_handicapee: [false, true, true] en_couple: [true, true, true] - paris_base_ressources_couple: - 2019-01: [1553, 1553, 1554] + paris_base_ressources_i: [963, 963, 968] output: paris_complement_sante_ph_eligibilite: [false, true, false] @@ -33,3 +31,133 @@ paris_complement_sante_ph_montant: [100, 100] output: paris_complement_sante_ph: [100, 0] + +- name: couple, 2 PH, droit à CSP + period: 2020-01 + input: + famille: + parents: ['personne1', 'personne2'] + parisien: true + paris_base_ressources_famille: + 2019-12: 0 + cmu_c: false + menage: + personne_de_reference: personne1 + conjoint: personne2 + statut_occupation_logement: locataire_vide + logement_conventionne: true + depcom: 75012 + loyer: 700 + charges_locatives: 45 + individus: + personne1: + date_naissance: 1980-08-05 + handicap: true + aah: + 2019-12: 900 + personne2: + date_naissance: 1983-08-05 + handicap: true + aah: + 2019-12: 900 + foyer_fiscal: + declarants: [personne1, personne2] + output: + paris_complement_sante_ph: 468 + +- name: couple, une PH et une PA, droit à CSP/ OK) + period: 2020-01 + input: + famille: + parents: ['personne1', 'personne2'] + parisien: true + paris_base_ressources_famille: + 2019-12: 0 + menage: + personne_de_reference: personne1 + conjoint: personne2 + statut_occupation_logement: locataire_vide + logement_conventionne: true + depcom: 75012 + loyer: 700 + charges_locatives: 45 + individus: + personne1: + date_naissance: 1980-08-05 + handicap: true + aah: + 2019-12: 725 + personne2: + date_naissance: 1953-08-05 + activite: retraite + retraite_imposable: + 2019-12: 2336.38 + foyer_fiscal: + declarants: [personne1, personne2] + output: + paris_complement_sante_ph: 468 + +- name: couple, une PH et une PA, droit à CSP OK + period: 2020-01 + input: + famille: + parents: ['personne1', 'personne2'] + parisien: true + paris_base_ressources_famille: + 2019-12: 0 + menage: + personne_de_reference: personne1 + conjoint: personne2 + statut_occupation_logement: locataire_vide + logement_conventionne: true + depcom: 75012 + loyer: 700 + charges_locatives: 45 + individus: + personne1: + date_naissance: 1980-08-05 + handicap: true + aah: + 2019-12: 725 + personne2: + date_naissance: 1953-08-05 + activite: retraite + retraite_imposable: + 2019-12: 2336.38 + foyer_fiscal: + declarants: [personne1, personne2] + output: + paris_complement_sante_ph: 468 + +- name: couple, une PH et une personne non ouvre droit, droit à CSP OK + period: 2020-01 + input: + famille: + parents: ['personne1', 'personne2'] + parisien: true + paris_base_ressources_famille: + 2019-12: 0 + + menage: + personne_de_reference: personne1 + conjoint: personne2 + statut_occupation_logement: locataire_vide + logement_conventionne: true + depcom: 75012 + loyer: 700 + charges_locatives: 45 + individus: + personne1: + date_naissance: 1980-08-05 + handicap: true + aah: + 2019-12: 725 + personne2: + date_naissance: 1953-08-05 + activite: retraite + salaire_imposable: + 2019-12: 900 + foyer_fiscal: + declarants: [personne1, personne2] + output: + paris_complement_sante_ph: 468 From caeacd4f99f1c608bd277509b43ee5d760b7afa6 Mon Sep 17 00:00:00 2001 From: Amine Date: Wed, 4 Mar 2020 16:35:35 +0100 Subject: [PATCH 30/37] Corrige lint --- .../unittests/personnes_handicapees/paris_complement_sante.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/unittests/personnes_handicapees/paris_complement_sante.yaml b/tests/unittests/personnes_handicapees/paris_complement_sante.yaml index 0095315..96a2f78 100644 --- a/tests/unittests/personnes_handicapees/paris_complement_sante.yaml +++ b/tests/unittests/personnes_handicapees/paris_complement_sante.yaml @@ -137,7 +137,6 @@ parisien: true paris_base_ressources_famille: 2019-12: 0 - menage: personne_de_reference: personne1 conjoint: personne2 From 2e93b444efbc9de0e10b241322998a47d5796482 Mon Sep 17 00:00:00 2001 From: mtifarine Date: Wed, 25 Mar 2020 18:21:13 +0100 Subject: [PATCH 31/37] Revalorisation de l'aide de logement de Paris --- openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml | 2 ++ .../parameters/paris/paris_logement/plafond_pl_apd.yaml | 2 ++ openfisca_paris/parameters/paris/plfm/premier_plafond_plfm.yaml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml b/openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml index 50101bd..4030756 100644 --- a/openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml +++ b/openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml @@ -10,3 +10,5 @@ values: value: 1180.0 2019-01-01: value: 1210.0 + 2020-01-01: + value: 1220.00 diff --git a/openfisca_paris/parameters/paris/paris_logement/plafond_pl_apd.yaml b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_apd.yaml index 1ab3d3d..2247d41 100644 --- a/openfisca_paris/parameters/paris/paris_logement/plafond_pl_apd.yaml +++ b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_apd.yaml @@ -11,3 +11,5 @@ values: value: 1180.0 2019-01-01: value: 1210.0 + 2020-01-01: + value: 1220.0 diff --git a/openfisca_paris/parameters/paris/plfm/premier_plafond_plfm.yaml b/openfisca_paris/parameters/paris/plfm/premier_plafond_plfm.yaml index 29d2b74..27a0d18 100644 --- a/openfisca_paris/parameters/paris/plfm/premier_plafond_plfm.yaml +++ b/openfisca_paris/parameters/paris/plfm/premier_plafond_plfm.yaml @@ -9,3 +9,5 @@ values: value: 1180.0 2019-01-01: value: 1210.0 + 2020-01-01: + value: 1220.0 From 162c0436e53aac117cb85c177f780c63ca8cbd62 Mon Sep 17 00:00:00 2001 From: mtifarine Date: Wed, 5 Aug 2020 15:40:22 +0200 Subject: [PATCH 32/37] Fiabilisation de la base ressources aides Paris --- openfisca_paris/paris.py | 96 ++++++++- tests/unittests/paris_solidarite.yaml | 290 ++------------------------ 2 files changed, 108 insertions(+), 278 deletions(-) diff --git a/openfisca_paris/paris.py b/openfisca_paris/paris.py index 447085a..d00582f 100644 --- a/openfisca_paris/paris.py +++ b/openfisca_paris/paris.py @@ -17,6 +17,99 @@ class paris_base_ressources_i(Variable): entity = Individu definition_period = MONTH + def formula(individu, period, legislation): + # dedommagement_victime_amiante, + # indemnites_journalieres_maladie, + # indemnites_journalieres_maladie_professionnelle, + # indemnites_journalieres_maternite, + # indemnites_volontariat + # indemnites_chomage_partiel + # indemnites_journalieres_maladie + # indemnites_stage + # pensions_alimentaires_percues + # pensions_alimentaires_versees_individu + # salaire_imposable + # indemnite_fin_contrat + # chomage_imposable + # revenus_stage_formation_pro + # remuneration_apprenti + # allocation_securisation_professionnelle + # prime_forfaitaire_mensuelle_reprise_activite + # salarie_regime_alsace_moselle + # tns_autres_revenus + # tns_autres_revenus_chiffre_affaires + # tns_benefice_exploitant_agricole + # tns_micro_entreprise_chiffre_affaires + # tns_micro_entreprise_benefice + # tns_auto_entrepreneur_chiffre_affaires + # tns_auto_entrepreneur_benefice + # pensions_invalidite + # rente_accident_travail + # retraite_imposable + # pensions_alimentaires_percues + # pensions_alimentaires_versees_individu + # prestation_compensatoire + # frais_reels + # revenus_locatifs + # revenus_capital + # plus_values_gains_divers + # gains_exceptionnels + + + last_year = period.last_year + #Salaires + salaire_imposable = individu('salaire_imposable', period) + revenus_stage_formation_pro = individu('revenus_stage_formation_pro', period) + chomage_imposable = individu('chomage_imposable', period) + retraite_imposable = individu('retraite_imposable', period) + + + #indemnites: + indemnites_stage = individu('indemnites_stage', period) + smic = legislation(period).paris.smic_net_mensuel + indemnites_stage_imposable = where((smic >= indemnites_stage), indemnites_stage, 0) + indemnites_journalieres = individu('indemnites_journalieres', period) + indemnites_chomage_partiel = individu('indemnites_chomage_partiel', period) + indemnites_volontariat = individu('indemnites_volontariat', period) + + #pensions + ass = individu('ass', period) + aah = individu('aah', period) + asi = individu('asi', period) + caah = individu('caah', period) + allocation_securisation_professionnelle = individu('allocation_securisation_professionnelle', period) + prestation_compensatoire = individu('prestation_compensatoire', period) + pensions_invalidite = individu('pensions_invalidite', period) + + def revenus_tns(): + revenus_auto_entrepreneur = individu('tns_auto_entrepreneur_benefice', period, options = [ADD]) + + # Les revenus TNS hors AE sont estimés en se basant sur le revenu N-1 + tns_micro_entreprise_benefice = individu('tns_micro_entreprise_benefice', last_year) / 12 + tns_benefice_exploitant_agricole = individu('tns_benefice_exploitant_agricole', last_year) / 12 + tns_autres_revenus = individu('tns_autres_revenus', last_year) / 12 + + return ( + revenus_auto_entrepreneur + tns_micro_entreprise_benefice + tns_benefice_exploitant_agricole + + tns_autres_revenus + ) + + result = ( + ass + aah + asi + caah + + salaire_imposable + indemnites_stage_imposable + revenus_stage_formation_pro + + chomage_imposable + allocation_securisation_professionnelle + indemnites_journalieres + indemnites_chomage_partiel + indemnites_volontariat + + prestation_compensatoire + retraite_imposable+ pensions_invalidite + + revenus_tns() + ) + + return result + +class paris_base_ressources_individu(Variable): + value_type = float + label = u"Base de ressources pour un individu, pour l'ensemble des aides de Paris" + entity = Individu + definition_period = MONTH + def formula(individu, period, legislation): last_year = period.last_year @@ -26,6 +119,7 @@ def formula(individu, period, legislation): caah = individu('caah', period) salaire_net = individu('salaire_net', period) + print(salaire_net) indemnites_stage = individu('indemnites_stage', period) smic = legislation(period).paris.smic_net_mensuel indemnites_stage_imposable = where((smic >= indemnites_stage), indemnites_stage, 0) @@ -39,6 +133,7 @@ def formula(individu, period, legislation): prestation_compensatoire = individu('prestation_compensatoire', period) retraite_nette = individu('retraite_nette', period) + pensions_invalidite = individu('pensions_invalidite', period) def revenus_tns(): @@ -84,7 +179,6 @@ def formula(famille, period): ressources_demandeur = famille.demandeur('paris_base_ressources_i', period) ressources_conjoint = famille.conjoint('paris_base_ressources_i', period) ressources_famille = famille('paris_base_ressources_famille', period) - return where(en_couple, ressources_demandeur + ressources_conjoint + ressources_famille, ressources_demandeur + ressources_famille) diff --git a/tests/unittests/paris_solidarite.yaml b/tests/unittests/paris_solidarite.yaml index 01b329a..1c39262 100644 --- a/tests/unittests/paris_solidarite.yaml +++ b/tests/unittests/paris_solidarite.yaml @@ -1,297 +1,33 @@ -- name: Couple non éligible pour l'aide PSOL car les parents n'ont pas le statut handicapé - description: Personne handicapée - period: 2016-02 - input: - famille: - parents: [couple1, couple2] - enfants: [enfant1] - parisien: true - en_couple: true - menage: - statut_occupation_logement: locataire_vide - personne_de_reference: couple1 - conjoint: couple2 - enfants: [enfant1] - individus: - couple1: - age: 35 - salaire_net: 500 - couple2: - age: 35 - salaire_net: 10 - enfant1: - age: 8 - handicap: true - foyers_fiscaux: - foyer_fiscal_0: - declarants: - - couple1 - - couple2 - personnes_a_charge: - - enfant1 - output: - paris_logement_psol: 0 - -- name: Personne éligible pour l'aide PSOL car revenus < 900 - description: Personne handicape - period: 2016-02 - absolute_error_margin: 0.005 - input: - age: 55 - parisien: true - statut_occupation_logement: locataire_vide - handicap: true - loyer: 600 - chomage_net: 600 - paris_base_ressources_famille: 0 - output: - paris_logement_psol: 92.35 - -- name: Personne non éligible pour l'aide PSOL car revenus > 900 - description: Personne agée - period: 2016-02 - input: - age: 65 - parisien: true - statut_occupation_logement: locataire_vide - loyer: 600 - salaire_net: 2500 - output: - paris_logement_psol: 0 - -- name: Couple non éligible pour l'aide PSOL - description: Personne agée - period: 2016-02 - input: - famille: - parents: [couple1, couple2] - parisien: true - aspa: 100 - menage: - statut_occupation_logement: locataire_vide - personne_de_reference: couple1 - conjoint: couple2 - individus: - couple1: - age: 65 - handicap: true - salaire_net: 900 - aah: 500 - couple2: - age: 65 - handicap: true - salaire_net: 5 - aah: - 2016-01: 5 - foyers_fiscaux: - foyer_fiscal_0: - declarants: - - couple1 - - couple2 - output: - paris_logement_psol: 0 - -- name: Couple non éligible pour l'aide PSOL car statut handicapé et revenus > 900 - description: Personne handicape - period: 2016-02 - input: - famille: - parents: [couple1, couple2] - parisien: true - menage: - statut_occupation_logement: locataire_vide - personne_de_reference: couple1 - conjoint: couple2 - individus: - couple1: - age: 55 - aah: 900 - salaire_net: 500 - handicap: true - couple2: - age: 65 - handicap: true - aah: 100 - salaire_net: 10 - foyers_fiscaux: - foyer_fiscal_0: - declarants: - - couple1 - - couple2 - output: - paris_logement_psol: 0 - -- name: Personne non éligible pour l'aide PSOL car revenus > 900 - description: Personne handicape - period: 2016-02 - input: - age: 55 - parisien: true - statut_occupation_logement: locataire_vide - handicap: true - aah: 2000 - output: - paris_logement_psol: 0 - -- name: Personne non éligible pour l'aide PSOL car elle est pas une personne âgée - description: Personne handicape - period: 2016-02 - input: - age: 55 - parisien: true - statut_occupation_logement: locataire_vide - handicap: false - aah: 500 - salaire_net: 80 - output: - paris_logement_psol: 0 - -- name: Personne éligible pour l'aide PSOL car elle perçoit < 900 - description: Personne handicape - period: 2016-02 - absolute_error_margin: 0.005 - input: - age: 55 - parisien: true - statut_occupation_logement: locataire_vide - handicap: true - aah: 500 - salaire_net: 80 - paris_base_ressources_famille: 0 - output: - paris_logement_psol: 92.35 - -- name: Personne non éligible pour l'aide PSOL car revenus > 900 - description: Personne handicape - period: 2016-02 - input: - age: 55 - parisien: true - statut_occupation_logement: locataire_vide - handicap: true - aah: 500 - salaire_net: 450 - output: - paris_logement_psol: 0 - -- name: Personne non éligible pour l'aide PSOL car revenus > 900 - description: Personne handicape - period: 2016-02 - input: - age: 55 - parisien: true - statut_occupation_logement: locataire_vide - handicap: true - aah: 800 - salaire_net: 600 - output: - paris_logement_psol: 0 - -- name: Couple non éligible pour l'aide PSOL car pas de statut handicapé - description: Personne handicape - period: 2016-02 - input: - famille: - parents: [couple1, couple2] - parisien: true - menage: - statut_occupation_logement: locataire_vide - personne_de_reference: couple1 - conjoint: couple2 - individus: - couple1: - age: 55 - chomage_net: 100 - couple2: - age: 55 - indemnites_stage: 100 - salaire_net: 100 - foyers_fiscaux: - foyer_fiscal_0: - declarants: - - couple1 - - couple2 - output: - paris_logement_psol: 0 - -- name: Personne éligible pour l'aide PSOL car statut personne âgée - description: Personne agée - period: 2016-02 - input: - age: 65 - parisien: true - statut_occupation_logement: locataire_vide - output: - paris_logement_psol: 100 - -- name: Personne non éligible pour l'aide PSOL car revenus = 900 - description: Personne agée - period: 2016-02 - input: - famille: - parents: [couple1] - parisien: true - menage: - statut_occupation_logement: locataire_vide - personne_de_reference: couple1 - individus: - couple1: - age: 65 - chomage_net: 900 - foyer_fiscal: - declarants: - - couple1 - output: - paris_logement_psol: 0 - -- name: Couple avec revenus inférieurs au plancher pour l'aide PSOL - description: Personne agée - period: 2016-02 - input: - famille: - parents: [couple1, couple2] - parisien: true - aspa: 1242 - menage: - statut_occupation_logement: locataire_vide - personne_de_reference: couple1 - conjoint: couple2 - individus: - couple1: - age: 65 - couple2: - age: 66 - foyers_fiscaux: - foyer_fiscal_0: - declarants: - - couple1 - - couple2 - output: - paris_logement_psol: 188 # 1430 - 1242 - - name: Couple éligible à 100% pour PSOL car les revenus inférieurs au plancher description: Personne agée - period: 2016-02 + period: 2020-06 input: famille: parents: [couple1, couple2] parisien: true - aspa: 100 + rsa: 0 + aspa: 0 + aide_logement: 310.55 + reduction_loyer_solidarite: 59.7 + paris_complement_sante: 468 menage: statut_occupation_logement: locataire_vide + logement_conventionne: true personne_de_reference: couple1 conjoint: couple2 + loyer: 980 individus: couple1: - age: 65 + age: 75 + retraite_imposable: 1052 couple2: age: 55 - indemnites_stage: 100 - salaire_net: 100 + retraite_imposable: 450 foyers_fiscaux: foyer_fiscal_0: declarants: - couple1 - couple2 output: - paris_logement_psol: 188 + paris_logement_psol: 106 + paris_logement: 95 \ No newline at end of file From b5d74149242ef76b9c11d5df4bb1d81c6a706349 Mon Sep 17 00:00:00 2001 From: mtifarine Date: Wed, 5 Aug 2020 16:28:42 +0200 Subject: [PATCH 33/37] correction des tests --- tests/unittests/paris.yaml | 6 ++-- tests/unittests/paris_logement.yaml | 24 +++++++-------- tests/unittests/paris_logement_famille.yaml | 28 ++++++++--------- tests/unittests/paris_solidarite_2018.yaml | 34 ++++++++++----------- 4 files changed, 46 insertions(+), 46 deletions(-) diff --git a/tests/unittests/paris.yaml b/tests/unittests/paris.yaml index 01baea6..9684e05 100644 --- a/tests/unittests/paris.yaml +++ b/tests/unittests/paris.yaml @@ -13,7 +13,7 @@ ass: 20 aah: 30 caah: 14 - retraite_nette: 50 + retraite_imposable: 50 allocation_securisation_professionnelle: 55 prestation_compensatoire: 60 pensions_invalidite: 65 @@ -22,9 +22,9 @@ indemnites_volontariat: 85 parent2: asi: 25 - salaire_net: 35 + salaire_imposable: 35 indemnites_chomage_partiel: 40 - chomage_net: 45 + chomage_imposable: 45 enfant1: indemnites_stage: 75 foyers_fiscaux: diff --git a/tests/unittests/paris_logement.yaml b/tests/unittests/paris_logement.yaml index 2b73279..5225ef1 100644 --- a/tests/unittests/paris_logement.yaml +++ b/tests/unittests/paris_logement.yaml @@ -15,7 +15,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1000 parent2: age: 55 @@ -277,7 +277,7 @@ parent1: age: 55 handicap: true - chomage_net: + chomage_imposable: 2016-01: 2000 foyer_fiscal: declarants: @@ -360,7 +360,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1000 parent2: age: 55 @@ -399,7 +399,7 @@ individus: parent1: age: 65 - salaire_net: + salaire_imposable: 2016-01: 1000 parent2: age: 55 @@ -431,7 +431,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 500 handicap: true aah: @@ -470,7 +470,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1000 parent2: age: 55 @@ -487,7 +487,7 @@ - enfant1 - enfant2 output: - aide_logement: 437.1 + aide_logement: 361.46 #437.1 paris_condition_taux_effort: false paris_logement: 0 @@ -509,11 +509,11 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1000 parent2: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1000 enfant1: age: 5 @@ -542,7 +542,7 @@ 2016-01: 200 paris_base_ressources_famille: 2016-01: 0 - salaire_net: + salaire_imposable: 2016-01: 850 output: paris_logement: 84 @@ -557,7 +557,7 @@ loyer: 550 aide_logement: 2016-01: 200 - salaire_net: + salaire_imposable: 2016-01: 1450 output: paris_logement: 0 @@ -588,7 +588,7 @@ loyer: 550 apl: 2016-01: 200 - salaire_net: + salaire_imposable: 2016-01: 850 output: paris_logement: 0 diff --git a/tests/unittests/paris_logement_famille.yaml b/tests/unittests/paris_logement_famille.yaml index 51ebccb..84543f3 100644 --- a/tests/unittests/paris_logement_famille.yaml +++ b/tests/unittests/paris_logement_famille.yaml @@ -16,7 +16,7 @@ individus: parent1: age: 35 - salaire_net: + salaire_imposable: 2015-11: 1000 2015-12: 1000 2016-01: 1000 @@ -37,7 +37,7 @@ - enfant1 - enfant2 output: - paris_logement_familles: 63.25 + paris_logement_familles: 128 #63.25 - name: Famille éligible pour l'aide Paris logement car parent monoparental avec trois enfant et ressources < 5000 description: Paris Logement Famille @@ -55,7 +55,7 @@ individus: parent1: age: 35 - salaire_net: + salaire_imposable: 2015-11: 1000 2015-12: 1000 2016-01: 1000 @@ -95,7 +95,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 3580 pensions_alimentaires_percues: 46 enfant1: @@ -169,7 +169,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1900 enfant1: age: 5 @@ -184,7 +184,7 @@ - enfant1 - enfant2 output: - paris_logement_familles: 113.25 + paris_logement_familles: 128 #113.25 - name: Famille éligible pour l'aide Paris logement car parent monoparental et revenus > 1600 relative_error_margin: 0.02 @@ -204,7 +204,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1900 enfant1: age: 5 @@ -222,7 +222,7 @@ - enfant2 - enfant3 output: - paris_logement_familles: 55.730 + paris_logement_familles: 128 # 55.730 - name: Famille non éligible pour l'aide Paris logement car parent monoparental description: Paris Logement Famille @@ -241,7 +241,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 1500 enfant1: age: 5 @@ -313,7 +313,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 2900 parent2: age: 55 @@ -333,7 +333,7 @@ - enfant2 - enfant3 output: - paris_logement_familles: 55.73 + paris_logement_familles: 84 #55.73 - name: Famille éligible pour l'aide Paris logement car un couple avec deux enfant et ressources < 3000 description: Paris Logement Famille @@ -351,7 +351,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 4000 enfant1: age: 5 @@ -388,7 +388,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 4900 parent2: age: 55 @@ -432,7 +432,7 @@ individus: parent1: age: 55 - salaire_net: + salaire_imposable: 2016-01: 2900 parent2: age: 55 diff --git a/tests/unittests/paris_solidarite_2018.yaml b/tests/unittests/paris_solidarite_2018.yaml index eeb94f0..b257aaf 100644 --- a/tests/unittests/paris_solidarite_2018.yaml +++ b/tests/unittests/paris_solidarite_2018.yaml @@ -15,10 +15,10 @@ individus: couple1: age: 35 - salaire_net: 500 + salaire_imposable: 500 couple2: age: 35 - salaire_net: 10 + salaire_imposable: 10 enfant1: age: 8 handicap: true @@ -41,7 +41,7 @@ statut_occupation_logement: locataire_vide handicap: true loyer: 600 - chomage_net: 600 + chomage_imposable: 600 paris_base_ressources_famille: 0 output: paris_logement_psol: 96 @@ -54,7 +54,7 @@ parisien: true statut_occupation_logement: locataire_vide loyer: 600 - salaire_net: 2500 + salaire_imposable: 2500 output: paris_logement_psol: 0 @@ -74,12 +74,12 @@ couple1: age: 65 handicap: true - salaire_net: 900 + salaire_imposable: 900 aah: 500 couple2: age: 65 handicap: true - salaire_net: 5 + salaire_imposable: 5 aah: 5 foyers_fiscaux: foyer_fiscal_0: @@ -104,13 +104,13 @@ couple1: age: 55 aah: 900 - salaire_net: 500 + salaire_imposable: 500 handicap: true couple2: age: 65 handicap: true aah: 100 - salaire_net: 10 + salaire_imposable: 10 foyers_fiscaux: foyer_fiscal_0: declarants: @@ -139,7 +139,7 @@ statut_occupation_logement: locataire_vide handicap: false aah: 500 - salaire_net: 80 + salaire_imposable: 80 output: paris_logement_psol: 0 @@ -152,7 +152,7 @@ statut_occupation_logement: locataire_vide handicap: true aah: 500 - salaire_net: 80 + salaire_imposable: 80 paris_base_ressources_famille: 0 output: paris_logement_psol: 96 @@ -166,7 +166,7 @@ statut_occupation_logement: locataire_vide handicap: true aah: 500 - salaire_net: 450 + salaire_imposable: 450 output: paris_logement_psol: 0 @@ -179,7 +179,7 @@ statut_occupation_logement: locataire_vide handicap: true aah: 800 - salaire_net: 600 + salaire_imposable: 600 output: paris_logement_psol: 0 @@ -197,11 +197,11 @@ individus: couple1: age: 55 - chomage_net: 100 + chomage_imposable: 100 couple2: age: 55 indemnites_stage: 100 - salaire_net: 100 + salaire_imposable: 100 foyers_fiscaux: foyer_fiscal_0: declarants: @@ -236,7 +236,7 @@ individus: couple1: age: 65 - chomage_net: 915 + chomage_imposable: 915 foyer_fiscal: declarants: - couple1 @@ -285,7 +285,7 @@ individus: couple1: age: 65 - salaire_net: 100 + salaire_imposable: 100 couple2: age: 66 foyers_fiscaux: @@ -315,7 +315,7 @@ couple2: age: 55 indemnites_stage: 100 - salaire_net: 100 + salaire_imposable: 100 foyers_fiscaux: foyer_fiscal_0: declarants: From 661b9d6ab9afd31fc967f792816b6069c8726fb4 Mon Sep 17 00:00:00 2001 From: mtifarine Date: Mon, 10 Aug 2020 10:23:07 +0200 Subject: [PATCH 34/37] Modification de la base ressource individu --- openfisca_paris/paris.py | 93 +-------------------------- tests/unittests/paris.yaml | 5 +- tests/unittests/paris_solidarite.yaml | 13 ++-- 3 files changed, 16 insertions(+), 95 deletions(-) diff --git a/openfisca_paris/paris.py b/openfisca_paris/paris.py index d00582f..b4e810e 100644 --- a/openfisca_paris/paris.py +++ b/openfisca_paris/paris.py @@ -18,50 +18,15 @@ class paris_base_ressources_i(Variable): definition_period = MONTH def formula(individu, period, legislation): - # dedommagement_victime_amiante, - # indemnites_journalieres_maladie, - # indemnites_journalieres_maladie_professionnelle, - # indemnites_journalieres_maternite, - # indemnites_volontariat - # indemnites_chomage_partiel - # indemnites_journalieres_maladie - # indemnites_stage - # pensions_alimentaires_percues - # pensions_alimentaires_versees_individu - # salaire_imposable - # indemnite_fin_contrat - # chomage_imposable - # revenus_stage_formation_pro - # remuneration_apprenti - # allocation_securisation_professionnelle - # prime_forfaitaire_mensuelle_reprise_activite - # salarie_regime_alsace_moselle - # tns_autres_revenus - # tns_autres_revenus_chiffre_affaires - # tns_benefice_exploitant_agricole - # tns_micro_entreprise_chiffre_affaires - # tns_micro_entreprise_benefice - # tns_auto_entrepreneur_chiffre_affaires - # tns_auto_entrepreneur_benefice - # pensions_invalidite - # rente_accident_travail - # retraite_imposable - # pensions_alimentaires_percues - # pensions_alimentaires_versees_individu - # prestation_compensatoire - # frais_reels - # revenus_locatifs - # revenus_capital - # plus_values_gains_divers - # gains_exceptionnels - last_year = period.last_year + last_3_months = period.last_3_months + #Salaires salaire_imposable = individu('salaire_imposable', period) revenus_stage_formation_pro = individu('revenus_stage_formation_pro', period) chomage_imposable = individu('chomage_imposable', period) - retraite_imposable = individu('retraite_imposable', period) + retraite_imposable = individu('retraite_imposable', last_3_months, options = [ADD]) / 3 #indemnites: @@ -104,58 +69,6 @@ def revenus_tns(): return result -class paris_base_ressources_individu(Variable): - value_type = float - label = u"Base de ressources pour un individu, pour l'ensemble des aides de Paris" - entity = Individu - definition_period = MONTH - - def formula(individu, period, legislation): - last_year = period.last_year - - ass = individu('ass', period) - aah = individu('aah', period) - asi = individu('asi', period) - caah = individu('caah', period) - - salaire_net = individu('salaire_net', period) - print(salaire_net) - indemnites_stage = individu('indemnites_stage', period) - smic = legislation(period).paris.smic_net_mensuel - indemnites_stage_imposable = where((smic >= indemnites_stage), indemnites_stage, 0) - revenus_stage_formation_pro = individu('revenus_stage_formation_pro', period) - - chomage_net = individu('chomage_net', period) - allocation_securisation_professionnelle = individu('allocation_securisation_professionnelle', period) - indemnites_journalieres = individu('indemnites_journalieres', period) - indemnites_chomage_partiel = individu('indemnites_chomage_partiel', period) - indemnites_volontariat = individu('indemnites_volontariat', period) - - prestation_compensatoire = individu('prestation_compensatoire', period) - retraite_nette = individu('retraite_nette', period) - - pensions_invalidite = individu('pensions_invalidite', period) - - def revenus_tns(): - revenus_auto_entrepreneur = individu('rpns_auto_entrepreneur_benefice', period, options = [ADD]) - - # Les revenus TNS hors AE sont estimés en se basant sur le revenu N-1 - tns_micro_entreprise_benefice = individu('rpns_micro_entreprise_benefice', last_year) / 12 - tns_benefice_exploitant_agricole = individu('rpns_benefice_exploitant_agricole', last_year) / 12 - tns_autres_revenus = individu('rpns_autres_revenus', last_year) / 12 - - return revenus_auto_entrepreneur + tns_micro_entreprise_benefice + tns_benefice_exploitant_agricole + tns_autres_revenus - - result = ( - ass + aah + asi + caah - + salaire_net + indemnites_stage_imposable + revenus_stage_formation_pro - + chomage_net + allocation_securisation_professionnelle + indemnites_journalieres + indemnites_chomage_partiel + indemnites_volontariat - + prestation_compensatoire + retraite_nette + pensions_invalidite - + revenus_tns() - ) - - return result - class paris_base_ressources_famille(Variable): value_type = float label = u"Base de ressources liée à une famille (à ajouter aux ressources des individus), pour l'ensemble des aides de Paris" diff --git a/tests/unittests/paris.yaml b/tests/unittests/paris.yaml index 9684e05..c70451d 100644 --- a/tests/unittests/paris.yaml +++ b/tests/unittests/paris.yaml @@ -13,7 +13,10 @@ ass: 20 aah: 30 caah: 14 - retraite_imposable: 50 + retraite_imposable: + 2019-01: 50 + 2018-12: 50 + 2018-11: 50 allocation_securisation_professionnelle: 55 prestation_compensatoire: 60 pensions_invalidite: 65 diff --git a/tests/unittests/paris_solidarite.yaml b/tests/unittests/paris_solidarite.yaml index 1c39262..132dc86 100644 --- a/tests/unittests/paris_solidarite.yaml +++ b/tests/unittests/paris_solidarite.yaml @@ -19,15 +19,20 @@ individus: couple1: age: 75 - retraite_imposable: 1052 + retraite_imposable: + 2020-05: 1052 + 2020-04: 1052 + 2020-03: 1052 couple2: age: 55 - retraite_imposable: 450 + retraite_imposable: + 2020-05: 450 + 2020-04: 450 + 2020-03: 450 foyers_fiscaux: foyer_fiscal_0: declarants: - couple1 - couple2 output: - paris_logement_psol: 106 - paris_logement: 95 \ No newline at end of file + paris_logement_psol: 106 \ No newline at end of file From 492b3560ef8b03c232d6c1e85acbc29b14cd213b Mon Sep 17 00:00:00 2001 From: Mohamed TIFARINE <41685572+mtifarine@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:54:27 +0200 Subject: [PATCH 35/37] Corrige les conditions de la formule Paris logement --- .../paris_logement/aide_pl_apd_couple.yaml | 7 --- .../paris_logement/aide_pl_apd_pers_isol.yaml | 7 --- .../paris/paris_logement/aide_pl_fam.yaml | 7 --- ...f.yaml => plafond_pl_couple_avec_enf.yaml} | 0 ...d.yaml => plafond_pl_couple_sans_enf.yaml} | 6 +-- .../paris/paris_logement/plafond_pl_fam.yaml | 7 --- ...l.yaml => plafond_pl_personne_isolee.yaml} | 3 +- openfisca_paris/paris_logement.py | 45 ++++++++++++------- .../personnes_agees/paris_logement.py | 5 ++- 9 files changed, 38 insertions(+), 49 deletions(-) delete mode 100644 openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_couple.yaml delete mode 100644 openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_pers_isol.yaml delete mode 100644 openfisca_paris/parameters/paris/paris_logement/aide_pl_fam.yaml rename openfisca_paris/parameters/paris/paris_logement/{plafond_pl_avec_enf.yaml => plafond_pl_couple_avec_enf.yaml} (100%) rename openfisca_paris/parameters/paris/paris_logement/{plafond_pl_apd.yaml => plafond_pl_couple_sans_enf.yaml} (82%) delete mode 100644 openfisca_paris/parameters/paris/paris_logement/plafond_pl_fam.yaml rename openfisca_paris/parameters/paris/paris_logement/{plafond_pl.yaml => plafond_pl_personne_isolee.yaml} (87%) diff --git a/openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_couple.yaml b/openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_couple.yaml deleted file mode 100644 index e750f35..0000000 --- a/openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_couple.yaml +++ /dev/null @@ -1,7 +0,0 @@ -description: Montant de l'aide pour un couple -unit: currency -values: - 2012-01-01: - value: 95.0 - 2015-01-01: - value: 95.0 diff --git a/openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_pers_isol.yaml b/openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_pers_isol.yaml deleted file mode 100644 index ba044aa..0000000 --- a/openfisca_paris/parameters/paris/paris_logement/aide_pl_apd_pers_isol.yaml +++ /dev/null @@ -1,7 +0,0 @@ -description: Montant de l'aide pour une personne isolée -unit: currency -values: - 2012-01-01: - value: 84.0 - 2015-01-01: - value: 84.0 diff --git a/openfisca_paris/parameters/paris/paris_logement/aide_pl_fam.yaml b/openfisca_paris/parameters/paris/paris_logement/aide_pl_fam.yaml deleted file mode 100644 index 0f3eac2..0000000 --- a/openfisca_paris/parameters/paris/paris_logement/aide_pl_fam.yaml +++ /dev/null @@ -1,7 +0,0 @@ -description: Montant de l'aide pour un couple avec enfant -unit: currency -values: - 2012-01-01: - value: 116.0 - 2015-01-01: - value: 116.0 diff --git a/openfisca_paris/parameters/paris/paris_logement/plafond_pl_avec_enf.yaml b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_couple_avec_enf.yaml similarity index 100% rename from openfisca_paris/parameters/paris/paris_logement/plafond_pl_avec_enf.yaml rename to openfisca_paris/parameters/paris/paris_logement/plafond_pl_couple_avec_enf.yaml diff --git a/openfisca_paris/parameters/paris/paris_logement/plafond_pl_apd.yaml b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_couple_sans_enf.yaml similarity index 82% rename from openfisca_paris/parameters/paris/paris_logement/plafond_pl_apd.yaml rename to openfisca_paris/parameters/paris/paris_logement/plafond_pl_couple_sans_enf.yaml index 2247d41..8171b82 100644 --- a/openfisca_paris/parameters/paris/paris_logement/plafond_pl_apd.yaml +++ b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_couple_sans_enf.yaml @@ -5,11 +5,11 @@ values: value: 1140.0 2015-01-01: value: 1140.0 - 2017-01-01: - value: 1160.0 2018-01-01: value: 1180.0 2019-01-01: value: 1210.0 2020-01-01: - value: 1220.0 + value: 1220.00 + 2021-10-01: + value: 1240.00 diff --git a/openfisca_paris/parameters/paris/paris_logement/plafond_pl_fam.yaml b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_fam.yaml deleted file mode 100644 index 8c4b0e9..0000000 --- a/openfisca_paris/parameters/paris/paris_logement/plafond_pl_fam.yaml +++ /dev/null @@ -1,7 +0,0 @@ -description: plafond des ressources mensuelles pour un couple avec enfant -unit: currency -values: - 2012-01-01: - value: 1600.0 - 2015-01-01: - value: 1600.0 diff --git a/openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_personne_isolee.yaml similarity index 87% rename from openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml rename to openfisca_paris/parameters/paris/paris_logement/plafond_pl_personne_isolee.yaml index 4030756..5b94c39 100644 --- a/openfisca_paris/parameters/paris/paris_logement/plafond_pl.yaml +++ b/openfisca_paris/parameters/paris/paris_logement/plafond_pl_personne_isolee.yaml @@ -1,5 +1,4 @@ -description: plafond des ressources mensuelles pour une personne isolée ou un couple - sans enfant +description: plafond des ressources mensuelles pour une personne isolée unit: currency values: 2012-01-01: diff --git a/openfisca_paris/paris_logement.py b/openfisca_paris/paris_logement.py index 7aa05a4..2414aed 100644 --- a/openfisca_paris/paris_logement.py +++ b/openfisca_paris/paris_logement.py @@ -29,8 +29,9 @@ class paris_logement_pa_ph(Variable): def formula(famille, period, legislation): last_month = period.last_month - plafond_pl = legislation(period).paris.paris_logement.plafond_pl - plafond_pl_avec_enf = legislation(period).paris.paris_logement.plafond_pl_avec_enf + plafond_pl_personne_isolee = legislation(period).paris.paris_logement.plafond_pl_personne_isolee + plafond_pl_couple_sans_enf = legislation(period).paris.paris_logement.plafond_pl_couple_sans_enf + plafond_pl_couple_avec_enf = legislation(period).paris.paris_logement.plafond_pl_couple_avec_enf aide_pers_isol = legislation(period).paris.paris_logement.aide_pers_isol aide_couple_ss_enf = legislation(period).paris.paris_logement.aide_couple_ss_enf aide_couple_avec_enf = legislation(period).paris.paris_logement.aide_couple_avec_enf @@ -42,11 +43,16 @@ def formula(famille, period, legislation): nb_enfants = famille('paris_nb_enfants', period) paris_logement_ph_eligibilite = famille('paris_logement_ph_eligibilite', period) - plafond = select([(nb_enfants >= 1), (nb_enfants < 1)], [plafond_pl_avec_enf, plafond_pl]) + couple_avec_enfant = personnes_couple * (nb_enfants == 1) + couple_sans_enfant = personnes_couple * (nb_enfants == 0) + personne_isolee = not_(personnes_couple) * (nb_enfants == 0) + + plafond = select([couple_avec_enfant, couple_sans_enfant, personne_isolee], + [plafond_pl_couple_avec_enf, plafond_pl_couple_sans_enf, plafond_pl_personne_isolee]) condition_ressource = base_ressources <= plafond - montant_aide = select([personnes_couple * (nb_enfants > 0), personnes_couple, - ((personnes_couple != 1) * (nb_enfants == 0)), ((personnes_couple != 1) * (nb_enfants >= 1))], - [aide_couple_avec_enf, aide_couple_ss_enf, aide_pers_isol, 0]) + + montant_aide = select([couple_avec_enfant, couple_sans_enfant, personne_isolee], + [aide_couple_avec_enf, aide_couple_ss_enf, aide_pers_isol]) result_montant = where((montant_aide > loyer_net), (montant_aide - (montant_aide - loyer_net)), montant_aide) @@ -91,15 +97,15 @@ def formula(famille, period): class paris_logement_fam(Variable): value_type = float - label = u"Paris Logement pour les couples avec enfant(s)" + label = u"Paris Logement pour les couples avec enfant" entity = Famille definition_period = MONTH def formula(famille, period, legislation): last_month = period.last_month - plafond_pl_fam = legislation(period).paris.paris_logement.plafond_pl_fam - aide_pl_fam = legislation(period).paris.paris_logement.aide_pl_fam + plafond_pl_couple_avec_enf = legislation(period).paris.paris_logement.plafond_pl_couple_avec_enf + aide_couple_avec_enf = legislation(period).paris.paris_logement.aide_couple_avec_enf base_ressources = famille('paris_base_ressources_foyer', last_month) loyer_net = famille('paris_logement_charge_nette_mensuelle', period) @@ -108,9 +114,10 @@ def formula(famille, period, legislation): nb_enfants = famille('paris_nb_enfants', period) paris_logement_elig_fam = famille('paris_logement_elig_fam', period) - condition_ressource = base_ressources <= plafond_pl_fam + condition_ressource = base_ressources <= plafond_pl_couple_avec_enf - montant_aide = where(personnes_couple * (nb_enfants > 0), aide_pl_fam, 0) + couple_avec_enfant = personnes_couple * (nb_enfants == 1) + montant_aide = where(couple_avec_enfant, aide_couple_avec_enf, 0) result = where((montant_aide > loyer_net), (montant_aide - (montant_aide - loyer_net)), montant_aide) @@ -145,9 +152,10 @@ class paris_logement_apd(Variable): def formula(famille, period, legislation): last_month = period.last_month - plafond = legislation(period).paris.paris_logement.plafond_pl_apd - aide_pl_apd_pers_isol = legislation(period).paris.paris_logement.aide_pl_apd_pers_isol - aide_pl_apd_couple = legislation(period).paris.paris_logement.aide_pl_apd_couple + plafond_pl_personne_isolee = legislation(period).paris.paris_logement.plafond_pl_personne_isolee + plafond_pl_couple_sans_enf = legislation(period).paris.paris_logement.plafond_pl_couple_sans_enf + aide_pers_isol = legislation(period).paris.paris_logement.aide_pers_isol + aide_couple_ss_enf = legislation(period).paris.paris_logement.aide_couple_ss_enf base_ressources = famille('paris_base_ressources_foyer', last_month) @@ -155,11 +163,18 @@ def formula(famille, period, legislation): loyer_net = famille('paris_logement_charge_nette_mensuelle', period) personnes_couple = famille('en_couple', period) + nb_enfants = famille('paris_nb_enfants', period) paris_logement_elig_apd = famille('paris_logement_elig_apd', period) + couple_sans_enfant = personnes_couple * (nb_enfants == 0) + personne_isolee = not_(personnes_couple) * (nb_enfants == 0) + plafond = select([couple_sans_enfant, personne_isolee], + [plafond_pl_couple_sans_enf, plafond_pl_personne_isolee]) + condition_ressources = (base_ressources - indemnite) <= plafond - montant_aide = where(personnes_couple, aide_pl_apd_couple, aide_pl_apd_pers_isol) + montant_aide = select([couple_sans_enfant, personne_isolee], + [aide_couple_ss_enf, aide_pers_isol]) result = where((montant_aide > loyer_net), (montant_aide - (montant_aide - loyer_net)), montant_aide) diff --git a/openfisca_paris/personnes_agees/paris_logement.py b/openfisca_paris/personnes_agees/paris_logement.py index 66a4b1d..7302140 100644 --- a/openfisca_paris/personnes_agees/paris_logement.py +++ b/openfisca_paris/personnes_agees/paris_logement.py @@ -62,8 +62,11 @@ def formula(famille, period, parameters): nb_enfants = famille('paris_nb_enfants', period) param_montant = parameters(period).paris.personnes_agees.paris_logement.montant + couple_avec_enfant = en_couple * (nb_enfants == 1) + couple_sans_enfant = en_couple * (nb_enfants == 0) + personne_isolee = not_(en_couple) * (nb_enfants == 0) montant = select( - [not_(en_couple), nb_enfants < 1, nb_enfants >=1], + [personne_isolee , couple_sans_enfant, couple_avec_enfant], [param_montant.personne_isolee, param_montant.couple_sans_enfant, param_montant.couple_avec_enfant] ) charge_logement = famille('paris_logement_charge_nette_mensuelle', period) From d5346764f8e9dad207b552e2e562e0736b65e2d4 Mon Sep 17 00:00:00 2001 From: Mohamed TIFARINE <41685572+mtifarine@users.noreply.github.com> Date: Sun, 12 Dec 2021 22:36:53 +0100 Subject: [PATCH 36/37] Renomme les variables TNS par RPNS --- openfisca_paris/paris.py | 18 +++++++++--------- tests/unittests/paris_logement.yaml | 2 +- tests/unittests/paris_logement_famille.yaml | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/openfisca_paris/paris.py b/openfisca_paris/paris.py index b4e810e..495a0cf 100644 --- a/openfisca_paris/paris.py +++ b/openfisca_paris/paris.py @@ -46,17 +46,17 @@ def formula(individu, period, legislation): prestation_compensatoire = individu('prestation_compensatoire', period) pensions_invalidite = individu('pensions_invalidite', period) - def revenus_tns(): - revenus_auto_entrepreneur = individu('tns_auto_entrepreneur_benefice', period, options = [ADD]) + def revenus_rpns(): + revenus_auto_entrepreneur = individu('rpns_auto_entrepreneur_benefice', period, options = [ADD]) - # Les revenus TNS hors AE sont estimés en se basant sur le revenu N-1 - tns_micro_entreprise_benefice = individu('tns_micro_entreprise_benefice', last_year) / 12 - tns_benefice_exploitant_agricole = individu('tns_benefice_exploitant_agricole', last_year) / 12 - tns_autres_revenus = individu('tns_autres_revenus', last_year) / 12 + # Les revenus RPNS hors AE sont estimés en se basant sur le revenu N-1 + rpns_micro_entreprise_benefice = individu('rpns_micro_entreprise_benefice', last_year) / 12 + rpns_benefice_exploitant_agricole = individu('rpns_benefice_exploitant_agricole', last_year) / 12 + rpns_autres_revenus = individu('rpns_autres_revenus', last_year) / 12 return ( - revenus_auto_entrepreneur + tns_micro_entreprise_benefice + tns_benefice_exploitant_agricole - + tns_autres_revenus + revenus_auto_entrepreneur + rpns_micro_entreprise_benefice + rpns_benefice_exploitant_agricole + + rpns_autres_revenus ) result = ( @@ -64,7 +64,7 @@ def revenus_tns(): + salaire_imposable + indemnites_stage_imposable + revenus_stage_formation_pro + chomage_imposable + allocation_securisation_professionnelle + indemnites_journalieres + indemnites_chomage_partiel + indemnites_volontariat + prestation_compensatoire + retraite_imposable+ pensions_invalidite - + revenus_tns() + + revenus_rpns() ) return result diff --git a/tests/unittests/paris_logement.yaml b/tests/unittests/paris_logement.yaml index 5225ef1..78e47d7 100644 --- a/tests/unittests/paris_logement.yaml +++ b/tests/unittests/paris_logement.yaml @@ -487,7 +487,7 @@ - enfant1 - enfant2 output: - aide_logement: 361.46 #437.1 + aide_logement: 437.1 paris_condition_taux_effort: false paris_logement: 0 diff --git a/tests/unittests/paris_logement_famille.yaml b/tests/unittests/paris_logement_famille.yaml index 84543f3..07f867a 100644 --- a/tests/unittests/paris_logement_famille.yaml +++ b/tests/unittests/paris_logement_famille.yaml @@ -184,7 +184,7 @@ - enfant1 - enfant2 output: - paris_logement_familles: 128 #113.25 + paris_logement_familles: 113.25 - name: Famille éligible pour l'aide Paris logement car parent monoparental et revenus > 1600 relative_error_margin: 0.02 @@ -222,7 +222,7 @@ - enfant2 - enfant3 output: - paris_logement_familles: 128 # 55.730 + paris_logement_familles: 55.730 - name: Famille non éligible pour l'aide Paris logement car parent monoparental description: Paris Logement Famille @@ -333,7 +333,7 @@ - enfant2 - enfant3 output: - paris_logement_familles: 84 #55.73 + paris_logement_familles: 55.73 - name: Famille éligible pour l'aide Paris logement car un couple avec deux enfant et ressources < 3000 description: Paris Logement Famille From 1821e01aabbff8193a566a82d8bd073b96278825 Mon Sep 17 00:00:00 2001 From: DURAND-GASSELIN Johan Date: Thu, 20 Jul 2023 11:21:37 +0200 Subject: [PATCH 37/37] =?UTF-8?q?M=C3=A0j=20setup.py=20pour=20pouvoir=20ut?= =?UTF-8?q?iliser=20la=20version=2041.0.0=20du=20core?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b26834e..3566bc5 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ packages=find_namespace_packages(), include_package_data=True, install_requires=[ - 'OpenFisca-Core >= 40.0.1, < 41', + 'OpenFisca-Core >= 40.0.1, <= 41.0.0', 'OpenFisca-France >= 149.1.1, < 150', ], extras_require={