Skip to main content

OpenFisca Core

PyPi Downloads PyPi Version

Python Contributors

Newsletter Twitter Slack

OpenFisca is a versatile microsimulation free software. Check the online documentation for more details.

This package contains the core features of OpenFisca, which are meant to be used by country packages such as OpenFisca-France. Bootstrapping your own country package should not take more than 5 minutes: check our country package template.

Environment

OpenFisca runs on Python. See setup.py for supported versions.

OpenFisca also relies strongly on NumPy. The last four minor versions should work, but only the latest/stable is tested.

Installation

If you're developing your own country package, you don't need to explicitly install OpenFisca-Core. It just needs to appear in your package dependencies. If you want to contribute to OpenFisca-Core itself, welcome! To install it locally you can use one of these two options:

  • or standard Python pip package manager.

Installing openfisca-core with pip

This installation requires Python and GIT installations.

To install openfisca-core locally in development mode run the following commands in a shell terminal:

git clone https://github.com/openfisca/openfisca-core.git
cd openfisca-core
python3 -m venv .venv
source .venv/bin/activate
make install-deps install-edit

Testing

Install the test dependencies:

make install-deps install-edit install-test

For integration testing purposes, openfisca-core relies on country-template and extension-template. Because these packages rely at the same time on openfisca-core, they need to be installed separately.

To run the entire test suite:

make test

If you have many tests, you could run them in parallel :

make test-core openfisca_args="--in-parallel"

You could add an option --num-workers=4 to limit to 4 threads. Default is your CPU Core number minus 1.

Be aware that this add overhead so use it only for huge test suite.

To run all the tests defined on a test file:

pytest tests/core/test_parameters.py

To run a single test:

pytest tests/core/test_parameters.py -k test_parameter_for_period

Types

This repository relies on MyPy for optional dynamic & static type checking.

As NumPy introduced the typing module in 1.20.0, to ensure type hints do not break the code at runtime, we run the checker against the last four minor NumPy versions.

Type checking is already run with make test. To run the type checker alone:

make check-types

Style

This repository adheres to a certain coding style, and we invite you to follow it for your contributions to be integrated promptly.

Style checking is already run with make test. To run the style checker alone:

make check-style

To automatically style-format your code changes:

make format-style

To automatically style-format your code changes each time you commit:

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

tee -a .git/hooks/pre-commit << END
#!/bin/bash
#
# Automatically format your code before committing.
# Change .venv/bin/activate if your virtual environment is located elsewhere.
source .venv/bin/activate
exec make format-style
exec make check-style
END

Documentation

OpenFisca’s toolchain checks whether documentation builds correctly and updates it automatically with each contribution to this repository.

In the meantime, please take a look at our contributing guidelines for some general tips on how to document your contributions, and at our official documentation's repository to in case you want to know how to build it by yourself —and improve it!

Serving the API

OpenFisca-Core provides a Web-API. It is by default served on the 5000 port.

To run it with the mock country package openfisca_country_template and another port value such as 2000, run:

openfisca serve --country-package openfisca_country_template --port 2000

To read more about the openfisca serve command, check out its documentation.

By default, the Web API uses 3 workers to avoid this issue. Without it, AJAX requests from Chrome sometimes take more than 20s to process. You can change the number of workers by specifying a --workers k option.

You can test that the API is running by executing the command:

curl http://localhost:2000/parameters

For more information about endpoints and input formatting, see the official documentation.

Tracker

The OpenFisca Web API comes with an optional tracker which allows you to measure the usage of the API.

Tracker installation

The tracker is not installed by default. To install it, run:

pip install openfisca_core[tracker] --use-deprecated=legacy-resolver # Or `pip install --editable ".[tracker]"` for an editable installation

Tracker configuration

The tracker is activated when these two options are set:

  • --tracker-url: An URL ending with piwik.php. It defines the Piwik instance that will receive the tracking information. To use the main OpenFisca Piwik instance, use https://stats.data.gouv.fr/piwik.php.
  • --tracker-idsite: An integer. It defines the identifier of the tracked site on your Piwik instance. To use the main OpenFisca piwik instance, use 4.
  • --tracker-token: A string. It defines the Piwik API Authentication token to differentiate API calls based on the user IP. Otherwise, all API calls will seem to come from your server. The Piwik API Authentication token can be found in your Piwik interface when you are logged in.

For instance, to run the Web API with the mock country package openfisca_country_template and the tracker activated, run:

openfisca serve --country-package openfisca_country_template --port 5000 --tracker-url https://stats.data.gouv.fr/piwik.php --tracker-idsite 4 --tracker-token $TRACKER_TOKEN

Release files for OpenFisca-Core 45.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for OpenFisca-Core 45.0.1
File Size Uploaded
openfisca_core-45.0.1.tar.gz 206.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for OpenFisca-Core 45.0.1
File Interpreter ABI Platform
openfisca_core-45.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 473.6 kB

Release files / openfisca_core-45.0.1.tar.gz

Download URL openfisca_core-45.0.1.tar.gz
Size 206.6 kB
Tags Source
SHA-256 checksum
How to use checksums
cfe5a9810df56ac8519dfda20479ce924a8f7304f32f491fa32afd264ae6d9b1
BLAKE2b-256 checksum
How to use checksums
893278ad4b6fe877e072a689a78d1bb279d3e31c9585a542b4fe3691194e57d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release files / openfisca_core-45.0.1-py3-none-any.whl

Download URL openfisca_core-45.0.1-py3-none-any.whl
Size 267.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5bf5092ae17110ff5e46ccd33811bae37dec7764e87c8034cabf193569b45cf9
BLAKE2b-256 checksum
How to use checksums
945983bb64e9aca768dd646da10f9e1401e8ff123ee622fc0994944c74eb7a5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release history Release notifications | RSS feed

45.0.4

2 release files

45.0.3

2 release files

45.0.2

2 release files

This release

45.0.1 This release

2 release files

45.0.0

2 release files

44.7.0

2 release files

44.6.0

2 release files

44.2.2

2 release files

44.2.1

2 release files

44.2.0

2 release files

44.1.0

2 release files

44.0.4

2 release files

44.0.3

2 release files

43.4.4

2 release files

43.4.2

2 release files

43.4.0

2 release files

43.3.9

2 release files

43.3.5

2 release files

43.3.4

2 release files

43.3.3

2 release files

43.3.2

2 release files

43.3.1

2 release files

43.2.7

2 release files

43.2.6

2 release files

43.2.5

2 release files

43.2.4

2 release files

43.2.2

2 release files

43.2.1

2 release files

43.2.0

2 release files

43.1.2

2 release files

43.1.1

2 release files

43.1.0

2 release files

43.0.0

2 release files

42.0.0

2 release files

41.5.7

2 release files

41.5.6

2 release files

41.5.5

2 release files

41.5.4

2 release files

41.5.3

2 release files

41.5.2

2 release files

41.5.1

2 release files

41.4.7

2 release files

41.4.6

2 release files

41.4.3

2 release files

41.4.2

2 release files

41.4.1

2 release files

41.3.0

2 release files

41.2.0

2 release files

41.0.1

2 release files

41.0.0

2 release files

40.1.0

2 release files

40.0.1

2 release files

38.0.3

2 release files

38.0.2

2 release files

38.0.1

2 release files

38.0.0

2 release files

35.9.0

2 release files

35.8.6

2 release files

35.8.4

2 release files

35.8.3

2 release files

35.8.2

2 release files

35.8.1

2 release files

35.8.0

2 release files

35.7.7

2 release files

35.7.5

2 release files

35.7.3

2 release files

35.7.1

1 release file

35.7.0

1 release file

35.6.0

1 release file

35.5.5

1 release file

35.5.4

1 release file

35.5.3

1 release file

35.5.2

1 release file

35.5.1

1 release file

35.5.0

1 release file

35.4.2

1 release file

35.4.1

1 release file

35.4.0

1 release file

35.3.8

1 release file

35.3.7

1 release file

35.3.6

1 release file

35.3.5

1 release file

35.3.4

1 release file

35.3.3

1 release file

35.3.2

1 release file

35.3.1

1 release file

35.3.0

1 release file

35.2.0

1 release file

35.1.1

1 release file

35.1.0

1 release file

35.0.5

1 release file

35.0.4

1 release file

35.0.3

1 release file

35.0.1

1 release file

35.0.0

1 release file

34.7.7

1 release file

34.7.6

1 release file

34.7.5

1 release file

34.7.4

1 release file

34.7.3

1 release file

34.7.2

1 release file

34.7.0

1 release file

34.6.9

1 release file

34.6.8

1 release file

34.6.7

1 release file

34.6.6

1 release file

34.6.5

1 release file

34.6.4

1 release file

34.6.3

1 release file

34.6.2

1 release file

34.6.1

1 release file

34.5.3

1 release file

34.5.2

1 release file

34.5.1

1 release file

34.5.0

1 release file

34.4.5

1 release file

34.4.4

1 release file

34.4.3

1 release file

34.4.2

1 release file

34.4.1

1 release file

34.4.0

1 release file

34.3.3

1 release file

34.3.2

1 release file

34.3.1

1 release file

34.2.8

1 release file

34.2.7

1 release file

34.2.6

1 release file

34.2.5

1 release file

34.2.4

1 release file

34.2.3

1 release file

34.2.2

1 release file

34.2.1

1 release file

34.2.0

1 release file

34.1.0

1 release file

34.0.1

1 release file

34.0.0

1 release file

33.0.1

1 release file

33.0.0

1 release file

32.1.1

1 release file

32.1.0

1 release file

32.0.0

1 release file

31.0.1

1 release file

31.0.0

1 release file

30.0.3

1 release file

30.0.2

1 release file

30.0.1

1 release file

30.0.0

1 release file

29.0.2

1 release file

29.0.1

1 release file

29.0.0

1 release file

28.0.1

1 release file

28.0.0

1 release file

27.0.2

1 release file

26.2.0

1 release file

26.1.0

1 release file

26.0.6

1 release file

26.0.5

1 release file

26.0.4

1 release file

26.0.3

1 release file

26.0.2

1 release file

26.0.1

1 release file

26.0.0

1 release file

25.3.4

1 release file

25.3.3

1 release file

25.3.2

1 release file

25.3.1

1 release file

25.3.0

1 release file

25.2.9

1 release file

25.2.8

1 release file

25.2.7

1 release file

25.2.6

1 release file

25.2.5

2 release files

25.2.2

2 release files

25.2.1

2 release files

25.2.0

2 release files

25.1.1

2 release files

25.0

2 release files

24.9.8

2 release files

24.9.7

2 release files

24.9.6

2 release files

24.9.5

2 release files

24.9.4

2 release files

24.9.3

2 release files

24.9.2

1 release file

24.9.1

2 release files

24.9.0

2 release files

24.8.2

2 release files

24.8.1

2 release files

24.8.0

2 release files

24.7.0

2 release files

24.6.8

2 release files

24.6.7

2 release files

24.6.6

1 release file

24.6.4

2 release files

24.6.3

2 release files

24.6.2

2 release files

24.6.1

2 release files

24.6.0

2 release files

24.5.6

2 release files

24.5.5

2 release files

24.3.2

2 release files

24.3.1

2 release files

24.2.0

2 release files

24.1.0

2 release files

24.0.1

2 release files

24.0.0

1 release file

23.5.2

2 release files

23.3.1

2 release files

23.3.0

2 release files

23.2.0

2 release files

23.1.7

2 release files

23.1.6

2 release files

23.1.5

2 release files

23.1.4

2 release files

23.1.3

2 release files

23.1.2

2 release files

23.1.1

1 release file

23.1.0

2 release files

23.0.2

1 release file

23.0.1

1 release file

23.0.0

1 release file

22.1.0

1 release file

22.0.10

1 release file

22.0.9

1 release file

22.0.8

1 release file

22.0.6

1 release file

22.0.5

1 release file

22.0.4

1 release file

22.0.3

1 release file

22.0.2

1 release file

22.0.1

1 release file

22.0.0

1 release file

21.5.0

1 release file

21.4.0

1 release file

21.3.6

1 release file

21.3.5

1 release file

21.3.4

1 release file

21.3.3

1 release file

21.3.2

1 release file

21.3.1

1 release file

21.3.0

1 release file

21.2.2

1 release file

21.2.1

1 release file

21.2.0

1 release file

21.1.0

1 release file

21.0.3

1 release file

21.0.2

1 release file

20.0.0

1 release file

19.0.0

1 release file

18.1.0

1 release file

18.0.2

1 release file

18.0.1

1 release file

18.0.0

1 release file

17.2.1

1 release file

17.2.0

1 release file

17.1.2

1 release file

17.1.1

1 release file

17.1.0

1 release file

17.0.1

1 release file

17.0.0

1 release file

16.3.0

1 release file

16.2.0

1 release file

16.1.1

1 release file

16.1.0

1 release file

16.0.0

1 release file

15.0.1

1 release file

15.0.0

1 release file

14.1.4

1 release file

14.1.3

1 release file

14.1.2

1 release file

14.1.1

1 release file

14.1.0

1 release file

14.0.1

1 release file

14.0.0

1 release file

13.0.1

1 release file

13.0.0

1 release file

12.3.0

1 release file

12.2.0

1 release file

12.1.4

1 release file

12.1.2

1 release file

12.1.1

1 release file

12.1.0

1 release file

12.0.3

1 release file

12.0.2

1 release file

12.0.1

1 release file

12.0.0

1 release file

11.0.0

1 release file

10.0.2

1 release file

10.0.1

1 release file

10.0.0

1 release file

9.1.0

1 release file

9.0.2

1 release file

9.0.1

1 release file

9.0.0

1 release file

8.0.1

1 release file

8.0.0

1 release file

7.1.0

1 release file

7.0.1

1 release file

7.0.0

1 release file

6.1.0

1 release file

6.0.0

1 release file

5.0.2

1 release file

5.0.1

1 release file

4.3.6

1 release file

4.3.5

1 release file

4.3.4

1 release file

4.3.3

1 release file

4.3.2

1 release file

4.3.1

1 release file

4.3.0

1 release file

4.2.2

1 release file

4.2.1

1 release file

4.2.0

1 release file

4.1.7

1 release file

4.1.6

1 release file

4.1.5

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.2.2

1 release file

2.2.1

1 release file

2.1.0

1 release file

2.0.4

1 release file

2.0.3

1 release file

2.0.2

1 release file

2.0.1

1 release file

2.0.1.dev1

2.0.0

1 release file

1.1.0

1 release file

1.0.0

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page