Metadata-Version: 2.4
Name: OpenFisca-CEQ
Version: 1.0.2
Summary: OpenFisca tax and benefit system for CEQ
Author-email: OpenFisca Team <contact@openfisca.fr>
License: AGPL-3.0
Project-URL: Homepage, https://github.com/openfisca/openfisca-ceq
Project-URL: Repository, https://github.com/openfisca/openfisca-ceq
Keywords: benefit,microsimulation,social,tax
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.AGPL.txt
Requires-Dist: OpenFisca-Survey-Manager<7.0,>=6.2.0
Requires-Dist: OpenFisca-Core<45.0,>=44.0.0
Requires-Dist: importlib-metadata
Requires-Dist: matplotlib>=3.8.0
Requires-Dist: python-slugify
Requires-Dist: scipy<2.0,>=1.10.1
Requires-Dist: setuptools<66
Requires-Dist: xlrd>=2.0.0
Requires-Dist: xlsxwriter
Requires-Dist: xlwt>=1.3.0
Provides-Extra: dev
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: papermill; extra == "dev"
Requires-Dist: pdbpp; extra == "dev"
Requires-Dist: pytest>=8.3.3; extra == "dev"
Requires-Dist: requests>=2.32.0; extra == "dev"
Requires-Dist: yamllint<1.27,>=1.11.1; extra == "dev"
Dynamic: license-file

# OpenFisca CEQ

[![Newsletter](https://img.shields.io/badge/newsletter-subscribe!-informational.svg?style=flat)](mailto:contact%40openfisca.org?subject=Subscribe%20to%20your%20newsletter%20%7C%20S'inscrire%20%C3%A0%20votre%20newsletter&body=%5BEnglish%20version%20below%5D%0A%0ABonjour%2C%0A%0AVotre%C2%A0pr%C3%A9sence%C2%A0ici%C2%A0nous%C2%A0ravit%C2%A0!%20%F0%9F%98%83%0A%0AEnvoyez-nous%20cet%20email%20pour%20que%20l'on%20puisse%20vous%20inscrire%20%C3%A0%20la%20newsletter.%20%0A%0AAh%C2%A0!%20Et%20si%20vous%20pouviez%20remplir%20ce%20petit%20questionnaire%2C%20%C3%A7a%20serait%20encore%20mieux%C2%A0!%0Ahttps%3A%2F%2Fgoo.gl%2Fforms%2F45M0VR1TYKD1RGzX2%0A%0AAmiti%C3%A9%2C%0AL%E2%80%99%C3%A9quipe%20OpenFisca%0A%0A%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20ENGLISH%20VERSION%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0AHi%2C%20%0A%0AWe're%20glad%20to%20see%20you%20here!%20%F0%9F%98%83%0A%0APlease%20send%20us%20this%20email%2C%20so%20we%20can%20subscribe%20you%20to%20the%20newsletter.%0A%0AAlso%2C%20if%20you%20can%20fill%20out%20this%20short%20survey%2C%20even%20better!%0Ahttps%3A%2F%2Fgoo.gl%2Fforms%2FsOg8K1abhhm441LG2%0A%0ACheers%2C%0AThe%20OpenFisca%20Team)
[![Twitter](https://img.shields.io/badge/twitter-follow%20us!-9cf.svg?style=flat)](https://twitter.com/intent/follow?screen_name=openfisca)
[![Slack](https://img.shields.io/badge/slack-join%20us!-blueviolet.svg?style=flat)](mailto:contact%40openfisca.org?subject=Join%20you%20on%20Slack%20%7C%20Nous%20rejoindre%20sur%20Slack&body=%5BEnglish%20version%20below%5D%0A%0ABonjour%2C%0A%0AVotre%C2%A0pr%C3%A9sence%C2%A0ici%C2%A0nous%C2%A0ravit%C2%A0!%20%F0%9F%98%83%0A%0ARacontez-nous%20un%20peu%20de%20vous%2C%20et%20du%20pourquoi%20de%20votre%20int%C3%A9r%C3%AAt%20de%20rejoindre%20la%20communaut%C3%A9%20OpenFisca%20sur%20Slack.%0A%0AAh%C2%A0!%20Et%20si%20vous%20pouviez%20remplir%20ce%20petit%20questionnaire%2C%20%C3%A7a%20serait%20encore%20mieux%C2%A0!%0Ahttps%3A%2F%2Fgoo.gl%2Fforms%2F45M0VR1TYKD1RGzX2%0A%0AN%E2%80%99oubliez%20pas%20de%20nous%20envoyer%20cet%20email%C2%A0!%20Sinon%2C%20on%20ne%20pourra%20pas%20vous%20contacter%20ni%20vous%20inviter%20sur%20Slack.%0A%0AAmiti%C3%A9%2C%0AL%E2%80%99%C3%A9quipe%20OpenFisca%0A%0A%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20ENGLISH%20VERSION%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0AHi%2C%20%0A%0AWe're%20glad%20to%20see%20you%20here!%20%F0%9F%98%83%0A%0APlease%20tell%20us%20a%20bit%20about%20you%20and%20why%20you%20want%20to%20join%20the%20OpenFisca%20community%20on%20Slack.%0A%0AAlso%2C%20if%20you%20can%20fill%20out%20this%20short%20survey%2C%20even%20better!%0Ahttps%3A%2F%2Fgoo.gl%2Fforms%2FsOg8K1abhhm441LG2.%0A%0ADon't%20forget%20to%20send%20us%20this%20email!%20Otherwise%20we%20won't%20be%20able%20to%20contact%20you%20back%2C%20nor%20invite%20you%20on%20Slack.%0A%0ACheers%2C%0AThe%20OpenFisca%20Team)
[![CI](https://github.com/openfisca/openfisca-ceq/workflows/CI/badge.svg)](https://github.com/openfisca/openfisca-ceq/actions)
[![Python](https://img.shields.io/pypi/pyversions/openfisca-ceq.svg)](https://pypi.python.org/pypi/openfisca-ceq)
[![PyPi](https://img.shields.io/pypi/v/openfisca-ceq.svg?style=flat)](https://pypi.python.org/pypi/openfisca-ceq)


## [EN] Introduction
OpenFisca is a versatile microsimulation free software. This repository contains the OpenFisca implementation of [Commitment to Equity (CEQ)](http://commitmentoequity.org) analysis framework.

A [brief introduction to CEQ concepts](./documentation/ceq.md) entering our model is available.

This package is currently developped to work with the [Côte d'Ivoire](https://github.com/openfisca/openfisca-cote-d-ivoire), [Mali](https://github.com/openfisca/openfisca-mali) and [Sénégal](https://github.com/openfisca/openfisca-senegal) country packages. A [detailed (but still WIP) description of the implementation of the multi-country comparison](./documentation/multi_country_comparison.md) is provided, the working language being French. 

You can however check the [general OpenFisca documentation](https://openfisca.org/doc/) in English!

## [FR] Introduction
[OpenFisca](https://www.openfisca.fr/) est un logiciel libre de micro-simulation. Ce dépôt contient la modélisation du cadre d'analyse développé dans le cadre du projet [Commitemnt to Equity (CEQ)](http://commitmentoequity.org).

Une [brève introduction aux concepts de revenus mobilisés par le cadre d'analyse CEQ](./documentation/ceq.md) utilisée par notre modèle est fournie.

Ce module est en cours de développment pour fonctionner avec les modèles des pays suivants:
 - [Côte d'Ivoire](https://github.com/openfisca/openfisca-cote-d-ivoire)
 - [Mali](https://github.com/openfisca/openfisca-mali)
 - [Sénégal](https://github.com/openfisca/openfisca-senegal)

La mise en oeuvre de la comparaison des systèmes sociaux-fiscaux des différents pays est décrite en détail dans la [section idoine](./documentation/multi_country_comparison.md).

Pour plus d'information sur les fonctionnalités et la manière d'utiliser OpenFisca, vous pouvez consulter la [documentation générale (en anglais)](https://openfisca.org/doc/).


## Installation

Ce paquet requiert [Python 3.11](https://www.python.org/downloads/release/python-3110/) ou plus récent et [uv](https://github.com/astral-sh/uv) (un gestionnaire de paquets Python moderne et rapide).

Plateformes supportées :
- distributions GNU/Linux (en particulier Debian and Ubuntu) ;
- Mac OS X ;
- Windows (nous recommandons d'utiliser [ConEmu](https://conemu.github.io/) à la place de la console par défaut) ;

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

### Installer uv

Nous recommandons l'utilisation de [uv](https://github.com/astral-sh/uv) pour gérer les dépendances et les environnements virtuels. `uv` est beaucoup plus rapide que `pip` et gère automatiquement les environnements virtuels.

Pour installer `uv`, lancez une fenêtre de terminal et exécutez :

```sh
curl -LsSf https://astral.sh/uv/install.sh | sh
```

Ou sur Windows (PowerShell) :
```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

Vérifiez l'installation :
```sh
uv --version
```

Bravo :tada: Vous êtes prêt·e à installer OpenFisca-CEQ !

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-CEQ.

### A. Installation minimale (uv install)

Suivez cette installation si vous souhaitez :
- procéder à des calculs sur une large population ;
- créer des simulations fiscales ;
- utiliser la cadre d'analyse d'openfisca-ceq

Pour pouvoir modifier OpenFisca-CEQ, consultez l'[Installation avancée](#b-installation-avancée-git-clone).

#### Installer OpenFisca-CEQ avec uv

Vérifiez les pré-requis :

```sh
python --version  # Devrait afficher "Python 3.11.xx" ou plus récent.
```

Installez OpenFisca-CEQ :

```sh
uv pip install openfisca-ceq
```

Ou si vous préférez utiliser `uv` avec un environnement virtuel :

```sh
uv venv
source .venv/bin/activate  # Sur Windows: .venv\Scripts\activate
uv pip install openfisca-ceq
```

Félicitations :tada: OpenFisca-CEQ est prêt à être utilisé !

#### Prochaines étapes

- Apprenez à utiliser OpenFisca avec nos [tutoriels](https://openfisca.org/doc/) (en anglais).

En fonction de vos projets, vous pourriez bénéficier de l'installation des paquets suivants :
- pour installer une extension ou écrire une législation au-dessus d'OpenFisca-CEQ, consultez la [documentation sur les extensions](https://openfisca.org/doc/contribute/extensions.html) (en anglais) ;
- pour représenter graphiquement vos résultats, essayez la bibliothèque [matplotlib](http://matplotlib.org/) ;
- pour gérer vos données, découvrez la bibliothèque [pandas](http://pandas.pydata.org/).

### B. Installation avancée (Git Clone)

Suivez cette installation si vous souhaitez :
- enrichir ou modifier la législation d'OpenFisca-CEQ ;
- contribuer au code source d'OpenFisca-CEQ.

#### Cloner OpenFisca-CEQ avec Git

Premièrement, assurez-vous que [Git](https://www.git-scm.com/) est bien installé sur votre machine.

Assurez-vous que vous êtes dans le répertoire où vous souhaitez cloner OpenFisca-CEQ.

Vérifiez les pré-requis :

```sh
python --version  # Devrait afficher "Python 3.11.xx" ou plus récent.
```

```sh
uv --version  # Vérifiez que uv est installé.
```

Clonez OpenFisca-CEQ sur votre machine :

```sh
git clone https://github.com/openfisca/openfisca-ceq.git
cd openfisca-ceq
make install
```

La commande `make install` utilise `uv sync` qui :
- Crée automatiquement un environnement virtuel (`.venv`)
- Installe toutes les dépendances depuis `pyproject.toml`
- Installe les dépendances de développement (ruff, pytest, etc.)

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

```sh
make test
```

:tada: OpenFisca-CEQ est prêt à être utilisé !

#### Prochaines étapes

- Pour enrichir ou faire évoluer la législation d'OpenFisca-CEQ, lisez _[Coding the Legislation](https://openfisca.org/doc/coding-the-legislation/index.html)_ (en anglais).
- Pour contribuer au code, lisez le _[Contribution Guidebook](https://openfisca.org/doc/contribute/index.html)_ (en anglais).

## Testing

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

```sh
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.

Le projet utilise [ruff](https://github.com/astral-sh/ruff) pour le linting et le formatage du code (remplaçant flake8 et autopep8).

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

```sh
make check-style
```

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

```sh
make format-style
```

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

```sh
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
```

## Stratégie de versionnement

Le code d'OpenFisca-CEQ 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-CEQ respecte les règles du [versionnement sémantique](http://semver.org/). 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](CHANGELOG.md) 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](https://github.com/openfisca/openfisca-ceq/graphs/contributors).
