{"id":32177371,"url":"https://github.com/openfisca/openfisca-core","last_synced_at":"2026-02-21T00:01:49.936Z","repository":{"id":12834801,"uuid":"15510254","full_name":"openfisca/openfisca-core","owner":"openfisca","description":"OpenFisca core engine. See other repositories for countries-specific code \u0026 data.","archived":false,"fork":false,"pushed_at":"2026-01-26T13:08:55.000Z","size":28809,"stargazers_count":207,"open_issues_count":104,"forks_count":84,"subscribers_count":24,"default_branch":"master","last_synced_at":"2026-01-27T01:53:39.860Z","etag":null,"topics":["better-rules","legislation-as-code","microsimulation","rules-as-code"],"latest_commit_sha":null,"homepage":"https://openfisca.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openfisca.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":"publiccode.yml","codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-12-29T15:17:04.000Z","updated_at":"2026-01-26T13:09:24.000Z","dependencies_parsed_at":"2024-05-11T03:33:44.694Z","dependency_job_id":"6693417b-e3a1-43af-982d-1a6fcf06e788","html_url":"https://github.com/openfisca/openfisca-core","commit_stats":{"total_commits":3880,"total_committers":68,"mean_commits":57.05882352941177,"dds":0.8255154639175257,"last_synced_commit":"fad5f69a91435c767cb6bca73de6a7d1b666c082"},"previous_names":[],"tags_count":448,"template":false,"template_full_name":null,"purl":"pkg:github/openfisca/openfisca-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfisca%2Fopenfisca-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfisca%2Fopenfisca-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfisca%2Fopenfisca-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfisca%2Fopenfisca-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openfisca","download_url":"https://codeload.github.com/openfisca/openfisca-core/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openfisca%2Fopenfisca-core/sbom","scorecard":{"id":709401,"data":{"date":"2025-08-11","repo":{"name":"github.com/openfisca/openfisca-core","commit":"8b422b44c2849ffea407f5fa0e5e179f82dc092e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.9,"checks":[{"name":"Maintained","score":10,"reason":"16 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/_before-conda.yaml:1","Warn: no topLevel permission defined: .github/workflows/_before-pip.yaml:1","Warn: no topLevel permission defined: .github/workflows/_lint-pip.yaml:1","Warn: no topLevel permission defined: .github/workflows/_test-conda.yaml:1","Warn: no topLevel permission defined: .github/workflows/_test-pip.yaml:1","Warn: no topLevel permission defined: .github/workflows/_version.yaml:1","Warn: no topLevel permission defined: .github/workflows/merge.yaml:1","Warn: no topLevel permission defined: .github/workflows/push.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-conda.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-conda.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-conda.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-conda.yaml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-conda.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_before-conda.yaml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-conda.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_before-conda.yaml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_before-pip.yaml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_before-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_lint-pip.yaml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_lint-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_lint-pip.yaml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_lint-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_lint-pip.yaml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_lint-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-conda.yaml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-conda.yaml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-conda.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-conda.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-conda.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/_test-conda.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-conda.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-pip.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-pip.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-pip.yaml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_test-pip.yaml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_test-pip.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_version.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_version.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/_version.yaml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/_version.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:119: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:124: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:209: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:212: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:221: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:227: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/merge.yaml:233: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:147: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:152: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:157: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:163: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:169: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/merge.yaml:255: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/merge.yaml:265: update your workflow using https://app.stepsecurity.io/secureworkflow/openfisca/openfisca-core/merge.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/_before-pip.yaml:56","Info:   0 out of  37 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T07:41:57.497Z","repository_id":12834801,"created_at":"2025-08-22T07:41:57.497Z","updated_at":"2025-08-22T07:41:57.497Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29668625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T23:24:07.480Z","status":"ssl_error","status_checked_at":"2026-02-20T23:24:06.202Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["better-rules","legislation-as-code","microsimulation","rules-as-code"],"created_at":"2025-10-21T20:03:51.979Z","updated_at":"2026-02-21T00:01:49.915Z","avatar_url":"https://github.com/openfisca.png","language":"Python","readme":"# OpenFisca Core\n\n[![PyPi Downloads](https://img.shields.io/pypi/dm/openfisca-core?label=pypi%2Fdownloads\u0026style=for-the-badge)](https://pepy.tech/project/openfisca-core)\n[![PyPi Version](https://img.shields.io/pypi/v/openfisca-core.svg?label=pypi%2Fversion\u0026style=for-the-badge)](https://pypi.python.org/pypi/openfisca-core)\n[![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/openfisca-core?label=conda%2Fdownloads\u0026style=for-the-badge)](https://anaconda.org/conda-forge/openfisca-core)\n[![Conda Version](https://img.shields.io/conda/vn/conda-forge/openfisca-core.svg?label=conda%2Fversion\u0026style=for-the-badge)](https://anaconda.org/conda-forge/openfisca-core)\n\n[![Python](https://img.shields.io/pypi/pyversions/openfisca-core.svg?label=python\u0026style=for-the-badge)](https://pypi.python.org/pypi/openfisca-core)\n[![Contributors](https://img.shields.io/github/contributors/openfisca/openfisca-core.svg?style=for-the-badge)](https://github.com/openfisca/openfisca-core/graphs/contributors)\n\n[![Newsletter](https://img.shields.io/badge/newsletter-subscribe!-informational.svg?style=for-the-badge)](mailto:contact%40openfisca.org?subject=Subscribe%20to%20your%20newsletter%20%7C%20S'inscrire%20%C3%A0%20votre%20newsletter\u0026body=%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)\n[![Twitter](https://img.shields.io/badge/twitter-follow%20us!-9cf.svg?style=for-the-badge)](https://twitter.com/intent/follow?screen_name=openfisca)\n[![Slack](https://img.shields.io/badge/slack-join%20us!-blueviolet.svg?style=for-the-badge)](mailto:contact%40openfisca.org?subject=Join%20you%20on%20Slack%20%7C%20Nous%20rejoindre%20sur%20Slack\u0026body=%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)\n\n[OpenFisca](https://openfisca.org/doc/) is a versatile microsimulation free software. Check the [online documentation](https://openfisca.org/doc/) for more details.\n\nThis package contains the core features of OpenFisca, which are meant to be used by country packages such as [OpenFisca-France](https://github.com/openfisca/openfisca-france). Bootstrapping your own country package should not take more than 5 minutes: check our [country package template](https://github.com/openfisca/country-template).\n\n## Environment\n\nOpenFisca runs on Python. See [setup.py](setup.py) for supported versions.\n\nOpenFisca also relies strongly on NumPy. The last four minor versions should work, but only the latest/stable is tested.\n\n## Installation\n\nIf 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](https://github.com/openfisca/openfisca-france/blob/100.0.0/setup.py#L60).\nIf you want to contribute to OpenFisca-Core itself, welcome!\nTo install it locally you can use one of these two options:\n* [conda](https://docs.conda.io/en/latest/) package manager that we recommend for Windows operating system users,\n* or standard Python [pip](https://packaging.python.org/en/latest/key_projects/#pip) package manager.\n\n### Installing `openfisca-core` with `pip`\n\nThis installation requires [Python](https://www.python.org/downloads/) and [GIT](https://git-scm.com) installations.\n\nTo install `openfisca-core` locally in development mode run the following commands in a shell terminal:\n\n```bash\ngit clone https://github.com/openfisca/openfisca-core.git\ncd openfisca-core\npython3 -m venv .venv\nsource .venv/bin/activate\nmake install-deps install-edit\n```\n\n### Installing `openfisca-core` with `conda`\n\nSince `openfisca-core` version [35.7.7](https://anaconda.org/conda-forge/openfisca-core), you could use `conda` to install OpenFisca-Core.\n\nConda is the easiest way to use OpenFisca under Windows as by installing Anaconda you will get:\n- Python\n- The package manager [Anaconda.org](https://docs.anaconda.com/anacondaorg/user-guide/)\n- A virtual environment manager : [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html)\n- A GUI [Anaconda Navigator](https://docs.anaconda.com/anaconda/navigator/index.html) if you choose to install the full [Anaconda](https://www.anaconda.com/products/individual)\n\nIf you are familiar with the command line you could use [Miniconda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/windows.html), which needs very much less disk space than Anaconda.\n\nAfter installing conda, run these commands in an `Anaconda Powershell Prompt`:\n- `conda create --name openfisca python=3.11` to create an `openfisca` environment.\n- `conda activate openfisca` to use your new environment.\n\nThen, choose one of the following options according to your use case:\n- `conda install -c conda-forge openfisca-core` for default dependencies,\n- or `conda install -c conda-forge openfisca-core-api` if you want the Web API part,\n- or `conda install -c conda-forge -c openfisca openfisca-core-dev` if you want all the dependencies needed to contribute to the project.\n\nFor information on how we publish to conda-forge, see [openfisca-core-feedstock](https://github.com/openfisca/openfisca-core-feedstock/blob/master/recipe/README.md).\n\n## Testing\n\nInstall the test dependencies:\n\n```\nmake install-deps install-edit install-test\n```\n\n\u003e For integration testing purposes, `openfisca-core` relies on\n\u003e [country-template](https://github.com/openfisca/country-template.git) and\n\u003e [extension-template](https://github.com/openfisca/extension-template.git).\n\u003e Because these packages rely at the same time on `openfisca-core`, they need\n\u003e to be installed separately.\n\nTo run the entire test suite:\n\n```sh\nmake test\n```\n\nIf you have many tests, you could run them in parallel :\n```sh\nmake test-core openfisca_args=\"--in-parallel\"\n```\n\nYou could add an option  `--num-workers=4` to limit to 4 threads. Default is your CPU Core number minus 1.\n\nBe aware that this add overhead so use it only for huge test suite.\n\nTo run all the tests defined on a test file:\n\n```sh\npytest tests/core/test_parameters.py\n```\n\nTo run a single test:\n\n```sh\npytest tests/core/test_parameters.py -k test_parameter_for_period\n```\n\n## Types\n\nThis repository relies on MyPy for optional dynamic \u0026 static type checking.\n\nAs 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.\n\nType checking is already run with `make test`. To run the type checker alone:\n\n```sh\nmake check-types\n```\n\n## Style\n\nThis repository adheres to a [certain coding style](STYLEGUIDE.md), and we invite you to follow it for your contributions to be integrated promptly.\n\nStyle checking is already run with `make test`. To run the style checker alone:\n\n```sh\nmake check-style\n```\n\nTo automatically style-format your code changes:\n\n```sh\nmake format-style\n```\n\nTo automatically style-format your code changes each time you commit:\n\n```sh\ntouch .git/hooks/pre-commit\nchmod +x .git/hooks/pre-commit\n\ntee -a .git/hooks/pre-commit \u003c\u003c END\n#!/bin/bash\n#\n# Automatically format your code before committing.\n# Change .venv/bin/activate if your virtual environment is located elsewhere.\nsource .venv/bin/activate\nexec make format-style\nexec make check-style\nEND\n```\n\n## Documentation\n\nOpenFisca’s toolchain checks whether documentation builds correctly and updates it automatically with each contribution to this repository.\n\nIn the meantime, please take a look at our [contributing guidelines](CONTRIBUTING.md) for some general tips on how to document your contributions, and at our official documentation's [repository](https://github.com/openfisca/openfisca-doc/blob/master/README.md) to in case you want to know how to build it by yourself —and improve it!\n\n## Serving the API\n\nOpenFisca-Core provides a Web-API. It is by default served on the `5000` port.\n\nTo run it with the mock country package `openfisca_country_template` and another port value such as `2000`, run:\n\n```sh\nopenfisca serve --country-package openfisca_country_template --port 2000\n```\n\nTo read more about the `openfisca serve` command, check out its [documentation](https://openfisca.org/doc/openfisca-python-api/openfisca_serve.html).\n\nBy default, the Web API uses 3 workers to avoid [this issue](http://stackoverflow.com/questions/11150343/slow-requests-on-local-flask-server). 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.\n\nYou can test that the API is running by executing the command:\n\n```sh\ncurl http://localhost:2000/parameters\n```\nFor more information about endpoints and input formatting, see the [official documentation](https://openfisca.org/doc/openfisca-web-api).\n\n### Tracker\n\nThe OpenFisca Web API comes with an [optional tracker](https://github.com/openfisca/tracker) which allows you to measure the usage of the API.\n\n#### Tracker installation\n\nThe tracker is not installed by default. To install it, run:\n\n```sh\npip install openfisca_core[tracker] --use-deprecated=legacy-resolver # Or `pip install --editable \".[tracker]\"` for an editable installation\n```\n\n\n#### Tracker configuration\n\nThe tracker is activated when these two options are set:\n\n* `--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`.\n* `--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`.\n* `--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.\n\nFor instance, to run the Web API with the mock country package `openfisca_country_template` and the tracker activated, run:\n\n```sh\nopenfisca serve --country-package openfisca_country_template --port 5000 --tracker-url https://stats.data.gouv.fr/piwik.php --tracker-idsite 4 --tracker-token $TRACKER_TOKEN\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenfisca%2Fopenfisca-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenfisca%2Fopenfisca-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenfisca%2Fopenfisca-core/lists"}