Git Product home page Git Product logo

openfisca-france's Introduction

OpenFisca-France

Newsletter Twitter Slack Python PyPi Gitpod

[EN] Introduction

OpenFisca is a versatile microsimulation free software. This repository contains the OpenFisca model of the French tax and benefit system. Therefore, the working language here is French. You can however check the general OpenFisca documentation in English!

We host a public instance of of the OpenFisca-France Web API. Learn more about its endpoint in the Swagger documentation. If you need to run large amount of calculations, or add extensions, you should host your own instance.

[FR] Introduction

OpenFisca est un logiciel libre de micro-simulation. Ce dépôt contient la modélisation du système social et fiscal français. Pour plus d'information sur les fonctionnalités et la manière d'utiliser OpenFisca, vous pouvez consulter la documentation générale.

Nous mettons à disposition une instance publique de l'API Web OpenFisca-France. Découvrez ses capacité sur sa documentation Swagger. Si vous avez besoin de réaliser un grand nombre de calculs ou d'ajouter des extensions, vous pouvez servir votre propre instance.

API Web publique : interrogez OpenFisca-France sans installation

OpenFisca met à disposition une API Web publique qui ne demande aucune installation. Utilisez l'API publique si vous souhaitez :

L'ensembles des endpoints sont décrits dans la documentation Swagger.

L'explorateur de législation contient la liste des paramètres et variables disponibles.

Installation

Ce paquet requiert Python 3.9 et pip ou conda.

Plateformes supportées :

Pour les autres OS : si vous pouvez exécuter Python et Numpy, l'installation d'OpenFisca devrait fonctionner.

Installez un environnement virtuel avec Pew

Nous recommandons l'utilisation d'un environnement virtuel (virtualenv) avec un gestionnaire de virtualenv tel que Pew. Vous pouvez aussi utiliser le gestionnaire d'environnemnt officiel de Python : venv.

  • Un virtualenv crée un environnement pour les besoins spécifiques du projet sur lequel vous travaillez.
  • Un gestionnaire de virtualenv, tel que Pew, vous permet de facilement créer, supprimer et naviguer entre différents projets.

Pour installer Pew, lancez une fenêtre de terminal et suivez ces instructions :

python --version # Python 3.9.0 ou plus récent devrait être installé sur votre ordinateur.
# Si non, téléchargez-le sur http://www.python.org et téléchargez pip.
pip install --upgrade pip
pip install pew

Créez un nouveau virtualenv nommé openfisca et configurez-le avec python 3.9 :

pew new openfisca --python=python3.9
# Si demandé, répondez "Y" à la question sur la modification du fichier de configuration de votre shell

Le  virtualenv  openfisca sera alors activé, c'est-à-dire que les commandes suivantes s'exécuteront directement dans l'environnement virtuel. Vous verrez dans votre terminal :

Installing setuptools, pip, wheel...done.
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.

Informations complémentaires :

  • sortez du virtualenv en tapant exit (or Ctrl-D) ;
  • re-rentrez en tapant pew workon openfisca dans votre terminal.

Bravo 🎉 Vous êtes prêt·e à installer OpenFisca-France !

Nous proposons deux procédures d'installation. Choisissez l'installation A ou B ci-dessous en fonction de l'usage que vous souhaitez faire d'OpenFisca-France.

A. Installation minimale (pip install)

Suivez cette installation si vous souhaitez :

  • procéder à des calculs sur une large population ;
  • créer des simulations fiscales ;
  • écrire une extension au-dessus de la législation française (exemple : les extensions de Paris et Rennes ;
  • servir OpenFisca-France avec l'API Web OpenFisca.

Pour pouvoir modifier OpenFisca-France, consultez l'Installation avancée.

Installer OpenFisca-France avec pip install

Dans votre virtualenv, vérifiez les pré-requis :

python --version  # Devrait afficher "Python 3.9.xx".
#Si non, vérifiez que vous passez --python=python3.9 lors de la création de votre environnement virtuel.
pip --version  # Devrait afficher au moins 9.0.x
#Si non, exécutez "pip install --upgrade pip".

Installez OpenFisca-France :

pip install openfisca-france && pip install openfisca-core[web-api]

Note: La deuxième partie de la commande, à partir du &&, est optionnelle. Elle vous permet d'installer l'API Web d'OpenFisca.

Félicitations 🎉 OpenFisca-France est prêt à être utilisé !

Prochaines étapes

  • Apprenez à utiliser OpenFisca avec nos tutoriels (en anglais).
  • Hébergez et servez votre instance d'OpenFisca-France avec l'API Web OpenFisca.

En fonction de vos projets, vous pourriez bénéficier de l'installation des paquets suivants dans votre virtualenv :

  • pour installer une extension ou écrire une législation au-dessus d'OpenFisca-France, consultez la documentation sur les extensions (en anglais) ;
  • pour représenter graphiquement vos résultats, essayez la bibliothèque matplotlib ;
  • pour gérer vos données, découvrez la bibliothèque pandas.

B. Installation avancée (Git Clone)

Suivez cette installation si vous souhaitez :

  • enrichir ou modifier la législation d'OpenFisca-France ;
  • contribuer au code source d'OpenFisca-France.

Cloner OpenFisca-France avec Git

Premièrement, assurez-vous que Git est bien installé sur votre machine.

Dans votre virtualenv, assurez-vous que vous êtes dans le répertoire où vous souhaitez cloner OpenFisca-France.

Vérifiez les pré-requis :

python --version  # Devrait afficher "Python 3.9.xx".
#Si non, vérifiez que vous passez --python=python3.9 lors de la création de votre environnement virtuel.
pip --version  # Devrait afficher au moins 23.0.
#Si non, exécutez "pip install --upgrade pip".

Clonez OpenFisca-France sur votre machine :

git clone https://github.com/openfisca/openfisca-france.git
cd openfisca-france
pip install --editable .[dev] && pip install openfisca-core[web-api]

Vous pouvez vous assurer que votre installation s'est bien passée en exécutant :

pytest tests/test_basics.py # Ces test peuvent prendre jusqu'à 60 secondes.

🎉 OpenFisca-France est prêt à être utilisé !

Installez un environnement virtuel avec conda

Nous conseillons cette procédure pour les personnes utilisant Windows et n'ayant pas d'environnement Python fonctionnel. Elle fonctionne également sous Linux et macOS.

Ceci vous permet d'obtenir en une seule installation :

  • Python
  • Le gestionnaire de paquets Anaconda.org
  • Le gestionnaire d'environnement Python virtuel : conda

Voici les étapes à suivre :

  • Installer la version communautaire/gratuite en suivant la procédure décrite sur le site Anaconda. A noter que Anaconda occupe beaucoup d'espace disque (>2 Go), vous pouvez installer à la place Miniconda qui occupe beaucoup moins d'espace disque. Cependant vous n'aurez pas l'interface graphique Anaconda Navigator qui vous permet de gérer vos environnements. Si vous êtes habituée à gérer les choses en ligne de commande, préfèrez Miniconda.
  • Depuis le menu démarrer, exécuter Anaconda Powershell Prompt. Ou utiliser votre shell préféré avec Miniconda, il vous faudra peut-être utiliser la commande conda init, mais conda vous le dira.
  • Exécuter les commandes suivantes dans le shell:
    • Ajouter conda-forge comme channel par défaut : conda config --add channels conda-forge && conda config --set channel_priority strict
    • Créer un environnement virtuel dédié : conda create --name openfisca python=3.9
    • Activer l'environnement : conda activate openfisca
    • Installer OpenFisca : conda install openfisca-france

🎉 OpenFisca-France est prêt à être utilisé !

Ensuite, pour quitter l'environnement OpenFisca : conda deactivate

Pour y revenir : conda activate openfisca

A noter que OpenFisca-France est présent sur conda-forge et sur un channel dédié openfisca. C'est conda-forge qui est mis en avant dans cette documentation, car accessible par défaut dans les installations Anaconda.

A noter que l'installation d'Openfisca-France peut lever une erreur sur certaines machines Windows à cause de la longueur des chemins de certains fichiers de paramètres et des restrictions de longueur de chemin sous Windows. Une option possible pour résoudre ce problème est de lever cette limite (voir cette documentation pour Windows >=10)

Prochaines étapes

Testing

Pour faire tourner les tests d'OpenFisca-France, exécutez la commande suivante :

make test

Style

Ce dépôt adhère à un style de code précis, et on vous invite à le suivre pour que vos contributions soient intégrées au plus vite.

L'analyse de style est déjà exécutée avec make test. Pour le faire tourner de façon indépendante :

make check-style

Pour corriger les erreurs de style de façon automatique:

make format-style

Pour corriger les erreurs de style de façon automatique à chaque fois que vous faites un commit :

touch .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

tee -a .git/hooks/pre-commit << END
#!/bin/sh
#
# Automatically format your code before committing.
exec make format-style
END

Servez OpenFisca-France avec l'API Web OpenFisca

Il est possible de servir l'API Web d'OpenFisca-France sur votre propre serveur :

openfisca serve

Pour en savoir plus sur la commande openfisca serve et ses options, consultez la documentation de référence.

Testez votre installation en requêtant la commande suivante :

curl "http://localhost:5000/parameter/marche_travail.salaire_minimum.smic.smic_b_horaire"

Vous devriez avoir le resultat suivant :

{
  "description": "Smic horaire brut",
  "id": "marche_travail.salaire_minimum.smic.smic_b_horaire",
  "values": {
    "2001-08-01": 6.67,
    "2002-07-01": 6.83,
    "2003-07-01": 7.19,
    "2004-07-01": 7.61,
    "2005-07-01": 8.03,
    "2006-07-01": 8.27,
    "2007-07-01": 8.44,
    "2008-05-01": 8.63,
    "2008-07-01": 8.71,
    "2009-07-01": 8.82,
    "2010-01-01": 8.86,
    "2011-01-01": 9.0,
    "2011-12-01": 9.19,
    "2012-01-01": 9.22,
    "2012-07-01": 9.4,
    "2013-01-01": 9.43,
    "2014-01-01": 9.53,
    "2015-01-01": 9.61,
    "2016-01-01": 9.67,
    "2017-01-01": 9.76
  }
}

🎉 Vous servez OpenFisca-France via l'API Web OpenFisca !

Pour en savoir plus, explorez la documentation de l'API Web.

Vous pouvez activer le suivi des visites sur votre instance via Piwik avec le Tracker API OpenFisca (en anglais).

Stratégie de versionnement

Le code d'OpenFisca-France est déployé de manière continue et automatique. Ainsi, à chaque fois que le code de la législation évolue sur la branche principale master, une nouvelle version est publiée.

De nouvelles versions sont donc publiées très régulièrement. Cependant, la différence entre deux versions consécutives étant réduite, les efforts d'adaptation pour passer de l'une à l'autre sont en général très limités.

Par ailleurs, OpenFisca-France respecte les règles du versionnement sémantique. Tous les changements qui ne font pas l'objet d'une augmentation du numéro majeur de version sont donc garantis rétro-compatibles.

Par exemple, si mon application utilise la version 13.1.1, je sais qu'elle fonctionnera également avec la version 13.2.0. En revanche, il est possible qu'une adaptation soit nécessaire sur mon client pour pouvoir utiliser la version 14.0.0.

Enfin, les impacts et périmètres des évolutions sont tous documentés sur le CHANGELOG du package. Ce document permet aux contributeurs de suivre les évolutions et d'établir leur propre stratégie de mise à jour.

Contributeurs

Voir la liste des contributeurs.

openfisca-france's People

Contributors

ahmedzemzami avatar allan-codeworks avatar anna-livia avatar benjello avatar benoit-cty avatar bfabre01 avatar bouvard avatar cbenz avatar claireleroy avatar clallemand avatar dorinelam avatar eraviart avatar fpagnoux avatar frtomas avatar gautiermerit avatar guillett avatar haekadi avatar jdesboeufs avatar jsantoul avatar laem avatar louisepd avatar mattisg avatar morendil avatar mtifarine avatar nanocom avatar pierrehvz avatar sandcha avatar sasha-laniece avatar sylvainipp avatar tomsopra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openfisca-france's Issues

Allocation de base PAJE

Les modalités de calcul de la PAJE pour les enfants nés après le 1er avril 2014 ont été changées.

Il faudra s'organiser pour corriger ça.

[Ceci est un reminder]

Incohérence RSA

Bonjour,

Je viens de repérer une incohérence (a priori apparue après le Hackathon de vendredi).
Voici la simulation :

{
    "scenarios": [
        {
            "test_case": {
                "familles": [
                    {
                        "parents": [
                            "ind0"
                        ]
                    }
                ],
                "foyers_fiscaux": [
                    {
                        "declarants": [
                            "ind0"
                        ]
                    }
                ],
                "individus": [
                    {
                        "activite": "Actif occupé",
                        "birth": "1989-01-01",
                        "id": "ind0",
                        "sali": 60000,
                        "statmarit": "Pacsé"
                    },
                    {
                        "activite": "Actif occupé",
                        "birth": "1989-01-01",
                        "id": "ind1",
                        "sali": 0,
                        "statmarit": "Pacsé"
                    }
                ],
                "menages": [
                    {
                        "personne_de_reference": "ind0",
                        "so": "Locataire ou sous-locataire d'un logement loué vide non-HLM",
                        "loyer": 1300
                    }
                ]
            },
            "legislation_url": "http://openfisca.fr/api/1/default-legislation",
            "year": 2013
        }
    ]
}

En tout logique ce ménage n'a pas droit au RSA étant donné les rémunérations élevées de l'individu 0. Pourtant il a droit au RSA socle dans la réponse.

Y-a-t'il une erreur dans ma requête ?

Fip in erf ?

Issue by benjello from Saturday Mar 01, 2014 at 00:20 GMT
Originally opened as openfisca/openfisca-core#304


Issue by AlexisEidelman from Monday Nov 11, 2013 at 10:30 GMT
Originally opened as https://github.com/openfisca/openfisca/issues/305


I'm not sure about what is done with fip people. If I got it well, they are incluced in the erf data as if there were "normal" people. But they're not. They don't live in the household. In particular that means they're not in the family.

Example :
I'm a 6 years old child. I live with my mum, and I'm on my father'fiscal declaration. I'm once EE, once FIP. If you change my status and add me in the erf in my father household then I'm counted twice, and there is two allocation for me...

Everyone agree to change ?

loyer for families

Issue by benjello from Friday Feb 28, 2014 at 23:59 GMT
Originally opened as openfisca/openfisca-core#162


Issue by AlexisEidelman from Tuesday Apr 16, 2013 at 08:23 GMT
Originally opened as https://github.com/openfisca/openfisca/issues/159


So far in the model, household benefit are calculated using the "loyer" variable.
It is assumed that each familiy pay the rent of its household (men) but in case of more than one family that rent should be shared into the families.
You can think about house-sharing to be convinced.

By the way, if I'm not wrong, there is a special legislation in that case.

Optimisation des paramètres ASPA

L'ASPA n'est apparemment pas calculée de manière optimale (doublons dans param.xml, notamment entre le montant et le plafond).

Je regarde ça dès que possible (la CNAV vient me voir mercredi).

csg on revenu foncier

Issue by benjello from Friday Feb 28, 2014 at 23:56 GMT
Originally opened as openfisca/openfisca-core#6


Issue by clems from Wednesday Nov 23, 2011 at 18:17 GMT
Originally opened as https://github.com/openfisca/openfisca/issues/3


Les cotisations sociales sur les revenus au barèmes (csgcap_bar) agrège la csg sur les revenus du capital soumis au barème, mais aussi sur les revenus fonciers et les rentes viagères à titres onéreux. Il faudrait séparer les 3 variables par soucis d'harmonisation et de clarté.

asf-elig

Actuellement la prestation asf_elig concerne les personnes alors qu'elle devrait être dans famille et utiliser des personnes du foyer.

alloc in foy

Issue by benjello from Saturday Mar 01, 2014 at 00:09 GMT
Originally opened as openfisca/openfisca-core#211


Issue by AlexisEidelman from Thursday May 30, 2013 at 15:32 GMT
Originally opened as https://github.com/openfisca/openfisca/issues/212


I try to clean the get value function.
Doing this I figured out that there is might be a problem with actual code and alloc in irpp.
It's not a big deal as it's still virtual for now, but is was coded as it was simpler than it is in real.
I mean in some case, a familiy is on two declaration (non married couple) so what af should we put ? There is also more complicated case. My point is just that there is no order between fam and foy so a legislation should be explicit on that point.

I change the code by commenting these line and let af = 0 instead.

Calcul de la PPE

Le calcul de la prime pour l'emploi est délicat. La meilleure source que j'ai trouvée est wikipedia (http://fr.wikipedia.org/wiki/Prime_pour_l%27emploi) combinée avec la notice des impôts (cf. NOT dans https://www.dropbox.com/home/IDEP_OPENFISCA/python_project/mSim/doc/Documentation/formulaires%20IR/Formulaires%202012). Le revenu pris en compte pour le calcul de la PPE est le revenu d'activité. Il semble qu'il y a une anomalie dans le fichier irpp.py qui clacule la base de ressources utile au calcul de la PPE, dans ppe_rev 👍
on lit " rev_ns = min
(0, rpns) / ppe.abatns + max_(0, rpns) * ppe.abatns
return rev_sa + rev_ns"
C'est étrange qu'un revenu négatif fasse baisser la base de ressources (donc la PPE) (min(0,rpns)).
Je vais essayer de définir dans une autre fonction les revenus d'activité salarié et non salarié, qu'on pourra reprendre dans _ppe_rev.
@clems @benjello

Plus de crédits d'impôts en 2013

Sur la fiche de calcul des impôts des revenus 2013, il n'y a plus les crédits d'impôts (alors qu'ils apparaissent dans la notice).

variables sali et salnet à 0 lorsqu'on définit le revenu par salsuperbrut

Lorsqu'on effectue une simulation via l'api avec un scénario où l'on définit le revenu d'un individu avec la variable salsuperbrut, on a sali et salnet à 0. Par ailleurs, revdisp est toujours à 5255.464355 quelque soit salsuperbrut.

L'exemple précis du bug est dans un notebook visible ici (voir le tableau à la fin): http://nbviewer.ipython.org/urls/raw.githubusercontent.com/fmassot/openfisca-web-notebook/master/test_salairesuperbrut.ipynb?create=1

Complément Familial Avril 2014

Le barème du Complément Familial a été mis à jour au 1er avril 2014.

Par ailleurs en décembre 2013 a été créé le Complément Familial Majoré pour les familles vivant sous le seuil de pauvreté. Son barème a même été réévalué le 23 avril 2014.
À vue de nez, le Complément Majoré n'existe pas encore dans OpenFisca.

Conjoint non pris en compte pour RSA socle

Bonjour,

Voici un cas qui donne un calcul de RSA socle incorrect.
Normalement ici je devrais avoir autour de 750 euros (2 parents, 1 enfant, pas de revenus, forfait logement) or je n'ai que 630 euros.

{
  "scenarios": [
    {
      "test_case": {
        "familles": [
          {
            "parents": [
              "demandeur",
              "demandeur.conjoint"
            ],
            "enfants": [
              "demandeur.enfant1"
            ]
          }
        ],
        "foyers_fiscaux": [
          {
            "declarants": [
              "demandeur",
              "demandeur.conjoint"
            ],
            "personnes_a_charge": [
              "demandeur.enfant1"
            ]
          }
        ],
        "individus": [
          {
            "id": "demandeur",
            "birth": "1979-12-31",
            "statmarit": 1
          },
          {
            "id": "demandeur.conjoint",
            "birth": "1979-12-31",
            "statmarit": 1
          },
          {
            "id": "demandeur.enfant1",
            "birth": "1999-12-31"
          }
        ],
        "menages": [
          {
            "personne_de_reference": "demandeur",
            "so": 6,
            "conjoint": "demandeur.conjoint",
            "enfants": [
              "demandeur.enfant1"
            ]
          }
        ]
      },
      "legislation_url": "http://api.openfisca.fr/api/1/default-legislation",
      "year": 2014
    }
  ]
}

Peut-être un problème avec la formule nb_par ?
Merci d'avance :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.