OpenFisca-Core 43.5.0__tar.gz → 44.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/CHANGELOG.md +26 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3/OpenFisca_Core.egg-info}/PKG-INFO +18 -8
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/SOURCES.txt +1 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/requires.txt +9 -1
- {openfisca_core-43.5.0/OpenFisca_Core.egg-info → openfisca_core-44.0.3}/PKG-INFO +18 -8
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/README.md +12 -3
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/openfisca_command.py +18 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/run_test.py +15 -0
- openfisca_core-44.0.3/openfisca_core/tools/parallel_plugin.py +55 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tools/test_runner.py +370 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/setup.cfg +1 -1
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/setup.py +13 -5
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/LICENSE +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/MANIFEST.in +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/dependency_links.txt +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/entry_points.txt +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/top_level.txt +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/dummy.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/formulas.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/misc.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/py.typed +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/rates.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/test_dummy.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/test_formulas.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/test_rates.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/in_memory_storage.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/on_disk_storage.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/types.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/_core_entity.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/_description.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/entity.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/group_entity.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/py.typed +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/role.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/test_entity.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/test_group_entity.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/test_role.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/types.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/cycle_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/empty_argument_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/nan_creation_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/parameter_not_found_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/parameter_parsing_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/period_mismatch_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/situation_parsing_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/spiral_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/variable_name_config_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/variable_not_found_error.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/experimental/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/experimental/_errors.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/experimental/_memory_config.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/formula_helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/holder.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/tests/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/tests/test_helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/types.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_enum_type.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_errors.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_guards.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_utils.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/config.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/enum.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/enum_array.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/py.typed +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/tests/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/tests/test_enum.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/tests/test_enum_array.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/types.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/memory_config.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/model_api.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/at_instant_like.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/config.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_at_instant.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_node.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_node_at_instant.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_scale.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_scale_bracket.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/values_history.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/vectorial_parameter_node_at_instant.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/_errors.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/_parsers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/config.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/date_unit.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/instant_.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/period_.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/py.typed +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/test_helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/test_instant.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/test_period.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/test_instant.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/test_parsers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/test_period.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/_core_population.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/_errors.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/group_population.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/population.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/types.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/entity_to_person_projector.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/first_person_to_entity_projector.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/projector.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/typing.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/unique_role_to_entity_projector.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/rates.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/reforms/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/reforms/reform.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/reforms/reform_excel.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/assets/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/assets/index.html +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/find_placeholders.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/measure_numpy_condition_notations.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/measure_performances.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/measure_performances_fancy_indexing.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v16_2_to_v17/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v16_2_to_v17/legislation.xsd +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v16_2_to_v17/xml_to_yaml_country_template.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v16_2_to_v17/xml_to_yaml_extension_template.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v24_to_25.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/remove_fuzzy.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/simulation_generator.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulation_builder.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/_build_default_simulation.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/_build_from_variables.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/_type_guards.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/simulation.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/simulation_builder.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/typing.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxbenefitsystems/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxbenefitsystems/tax_benefit_system.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/abstract_rate_tax_scale.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/abstract_tax_scale.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/amount_tax_scale_like.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/linear_average_rate_tax_scale.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/marginal_amount_tax_scale.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/marginal_rate_tax_scale.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/rate_tax_scale_like.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/single_amount_tax_scale.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/tax_scale_like.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tools/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tools/simulation_dumper.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/computation_log.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/flat_trace.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/full_tracer.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/performance_log.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/simple_tracer.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/trace_node.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/tracing_parameter_node_at_instant.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/types.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/config.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/helpers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/tests/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/tests/test_definition_period.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/variable.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/warnings/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/warnings/libyaml_warning.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/warnings/tempfile_warning.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/app.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/errors.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/handlers.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/entities.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/parameters.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/spec.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/tax_benefit_system.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/variables.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/openAPI.yml +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/scripts/__init__.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/scripts/serve.py +0 -0
- {openfisca_core-43.5.0 → openfisca_core-44.0.3}/pyproject.toml +0 -0
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
### 44.0.3 [#1352](https://github.com/openfisca/openfisca-core/pull/1352)
|
|
4
|
+
|
|
5
|
+
#### Technical changes
|
|
6
|
+
|
|
7
|
+
- Fix `setup.py` syntax to restore publishing to PyPI.
|
|
8
|
+
|
|
9
|
+
### 44.0.2 [#1351](https://github.com/openfisca/openfisca-core/pull/1351)
|
|
10
|
+
|
|
11
|
+
#### Technical changes
|
|
12
|
+
|
|
13
|
+
- Fix cache name mismatch in CI due to conditional Python version dependency #1346
|
|
14
|
+
|
|
15
|
+
### 44.0.1 [#1349](https://github.com/openfisca/openfisca-core/pull/1349)
|
|
16
|
+
|
|
17
|
+
#### Technical changes
|
|
18
|
+
|
|
19
|
+
- Add parallel execution of tests to `openfisca test` command line.
|
|
20
|
+
|
|
21
|
+
# 44.0.0 [#1346](https://github.com/openfisca/openfisca-core/pull/1346)
|
|
22
|
+
|
|
23
|
+
#### Technical changes
|
|
24
|
+
|
|
25
|
+
- Conditional dependency on Numpy, based on Python version.
|
|
26
|
+
- Add support for Python 3.13.
|
|
27
|
+
- Remove support of deprecated Python version 3.9. It still works, but is not tested anymore.
|
|
28
|
+
|
|
3
29
|
## 43.5.0 [#1344](https://github.com/openfisca/openfisca-core/pull/1344)
|
|
4
30
|
|
|
5
31
|
#### New features
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenFisca-Core
|
|
3
|
-
Version:
|
|
3
|
+
Version: 44.0.3
|
|
4
4
|
Summary: A versatile microsimulation free software
|
|
5
5
|
Home-page: https://github.com/openfisca/openfisca-core
|
|
6
6
|
Author: OpenFisca Team
|
|
7
7
|
Author-email: contact@openfisca.org
|
|
8
|
-
License:
|
|
8
|
+
License: License-Expression :: AGPL-3.0-or-later
|
|
9
9
|
Keywords: benefit microsimulation social tax
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
-
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
12
11
|
Classifier: Operating System :: POSIX
|
|
13
12
|
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
15
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
17
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
19
18
|
Description-Content-Type: text/markdown
|
|
20
19
|
License-File: LICENSE
|
|
@@ -22,7 +21,9 @@ Requires-Dist: PyYAML<7.0,>=6.0
|
|
|
22
21
|
Requires-Dist: StrEnum<0.5.0,>=0.4.8
|
|
23
22
|
Requires-Dist: dpath<3.0,>=2.2.0
|
|
24
23
|
Requires-Dist: numexpr<3.0,>=2.10.1
|
|
25
|
-
Requires-Dist: numpy<2.0,>=1.24.2
|
|
24
|
+
Requires-Dist: numpy<2.0,>=1.24.2; python_version < "3.11"
|
|
25
|
+
Requires-Dist: numpy<=3,>=1.26.0; python_version <= "3.12"
|
|
26
|
+
Requires-Dist: numpy<=3,>=2.1.0; python_version >= "3.13"
|
|
26
27
|
Requires-Dist: pendulum<4.0.0,>=3.0.0
|
|
27
28
|
Requires-Dist: psutil<6.0,>=5.9.4
|
|
28
29
|
Requires-Dist: pytest<9.0,>=8.3.3
|
|
@@ -98,7 +99,7 @@ This package contains the core features of OpenFisca, which are meant to be used
|
|
|
98
99
|
|
|
99
100
|
## Environment
|
|
100
101
|
|
|
101
|
-
OpenFisca runs on Python
|
|
102
|
+
OpenFisca runs on Python. See [setup.py](setup.py) for supported versions.
|
|
102
103
|
|
|
103
104
|
OpenFisca also relies strongly on NumPy. The last four minor versions should work, but only the latest/stable is tested.
|
|
104
105
|
|
|
@@ -112,7 +113,7 @@ To install it locally you can use one of these two options:
|
|
|
112
113
|
|
|
113
114
|
### Installing `openfisca-core` with `pip`
|
|
114
115
|
|
|
115
|
-
This installation requires [Python](https://www.python.org/downloads/)
|
|
116
|
+
This installation requires [Python](https://www.python.org/downloads/) and [GIT](https://git-scm.com) installations.
|
|
116
117
|
|
|
117
118
|
To install `openfisca-core` locally in development mode run the following commands in a shell terminal:
|
|
118
119
|
|
|
@@ -137,7 +138,7 @@ Conda is the easiest way to use OpenFisca under Windows as by installing Anacond
|
|
|
137
138
|
If 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.
|
|
138
139
|
|
|
139
140
|
After installing conda, run these commands in an `Anaconda Powershell Prompt`:
|
|
140
|
-
- `conda create --name openfisca python=3.
|
|
141
|
+
- `conda create --name openfisca python=3.11` to create an `openfisca` environment.
|
|
141
142
|
- `conda activate openfisca` to use your new environment.
|
|
142
143
|
|
|
143
144
|
Then, choose one of the following options according to your use case:
|
|
@@ -167,6 +168,15 @@ To run the entire test suite:
|
|
|
167
168
|
make test
|
|
168
169
|
```
|
|
169
170
|
|
|
171
|
+
If you have many tests, you could run them in parallel :
|
|
172
|
+
```sh
|
|
173
|
+
make test-core openfisca_args="--in-parallel"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
You could add an option `--num-workers=4` to limit to 4 threads. Default is your CPU Core number minus 1.
|
|
177
|
+
|
|
178
|
+
Be aware that this add overhead so use it only for huge test suite.
|
|
179
|
+
|
|
170
180
|
To run all the tests defined on a test file:
|
|
171
181
|
|
|
172
182
|
```sh
|
|
@@ -162,6 +162,7 @@ openfisca_core/taxscales/rate_tax_scale_like.py
|
|
|
162
162
|
openfisca_core/taxscales/single_amount_tax_scale.py
|
|
163
163
|
openfisca_core/taxscales/tax_scale_like.py
|
|
164
164
|
openfisca_core/tools/__init__.py
|
|
165
|
+
openfisca_core/tools/parallel_plugin.py
|
|
165
166
|
openfisca_core/tools/simulation_dumper.py
|
|
166
167
|
openfisca_core/tools/test_runner.py
|
|
167
168
|
openfisca_core/tracers/__init__.py
|
|
@@ -2,13 +2,21 @@ PyYAML<7.0,>=6.0
|
|
|
2
2
|
StrEnum<0.5.0,>=0.4.8
|
|
3
3
|
dpath<3.0,>=2.2.0
|
|
4
4
|
numexpr<3.0,>=2.10.1
|
|
5
|
-
numpy<2.0,>=1.24.2
|
|
6
5
|
pendulum<4.0.0,>=3.0.0
|
|
7
6
|
psutil<6.0,>=5.9.4
|
|
8
7
|
pytest<9.0,>=8.3.3
|
|
9
8
|
sortedcontainers<3.0,>=2.4.0
|
|
10
9
|
typing_extensions<5.0,>=4.5.0
|
|
11
10
|
|
|
11
|
+
[:python_version < "3.11"]
|
|
12
|
+
numpy<2.0,>=1.24.2
|
|
13
|
+
|
|
14
|
+
[:python_version <= "3.12"]
|
|
15
|
+
numpy<=3,>=1.26.0
|
|
16
|
+
|
|
17
|
+
[:python_version >= "3.13"]
|
|
18
|
+
numpy<=3,>=2.1.0
|
|
19
|
+
|
|
12
20
|
[ci]
|
|
13
21
|
build<0.11.0,>=0.10.0
|
|
14
22
|
twine<7.0,>=6.0
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OpenFisca-Core
|
|
3
|
-
Version:
|
|
3
|
+
Version: 44.0.3
|
|
4
4
|
Summary: A versatile microsimulation free software
|
|
5
5
|
Home-page: https://github.com/openfisca/openfisca-core
|
|
6
6
|
Author: OpenFisca Team
|
|
7
7
|
Author-email: contact@openfisca.org
|
|
8
|
-
License:
|
|
8
|
+
License: License-Expression :: AGPL-3.0-or-later
|
|
9
9
|
Keywords: benefit microsimulation social tax
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
-
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
12
11
|
Classifier: Operating System :: POSIX
|
|
13
12
|
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
15
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
17
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
19
18
|
Description-Content-Type: text/markdown
|
|
20
19
|
License-File: LICENSE
|
|
@@ -22,7 +21,9 @@ Requires-Dist: PyYAML<7.0,>=6.0
|
|
|
22
21
|
Requires-Dist: StrEnum<0.5.0,>=0.4.8
|
|
23
22
|
Requires-Dist: dpath<3.0,>=2.2.0
|
|
24
23
|
Requires-Dist: numexpr<3.0,>=2.10.1
|
|
25
|
-
Requires-Dist: numpy<2.0,>=1.24.2
|
|
24
|
+
Requires-Dist: numpy<2.0,>=1.24.2; python_version < "3.11"
|
|
25
|
+
Requires-Dist: numpy<=3,>=1.26.0; python_version <= "3.12"
|
|
26
|
+
Requires-Dist: numpy<=3,>=2.1.0; python_version >= "3.13"
|
|
26
27
|
Requires-Dist: pendulum<4.0.0,>=3.0.0
|
|
27
28
|
Requires-Dist: psutil<6.0,>=5.9.4
|
|
28
29
|
Requires-Dist: pytest<9.0,>=8.3.3
|
|
@@ -98,7 +99,7 @@ This package contains the core features of OpenFisca, which are meant to be used
|
|
|
98
99
|
|
|
99
100
|
## Environment
|
|
100
101
|
|
|
101
|
-
OpenFisca runs on Python
|
|
102
|
+
OpenFisca runs on Python. See [setup.py](setup.py) for supported versions.
|
|
102
103
|
|
|
103
104
|
OpenFisca also relies strongly on NumPy. The last four minor versions should work, but only the latest/stable is tested.
|
|
104
105
|
|
|
@@ -112,7 +113,7 @@ To install it locally you can use one of these two options:
|
|
|
112
113
|
|
|
113
114
|
### Installing `openfisca-core` with `pip`
|
|
114
115
|
|
|
115
|
-
This installation requires [Python](https://www.python.org/downloads/)
|
|
116
|
+
This installation requires [Python](https://www.python.org/downloads/) and [GIT](https://git-scm.com) installations.
|
|
116
117
|
|
|
117
118
|
To install `openfisca-core` locally in development mode run the following commands in a shell terminal:
|
|
118
119
|
|
|
@@ -137,7 +138,7 @@ Conda is the easiest way to use OpenFisca under Windows as by installing Anacond
|
|
|
137
138
|
If 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.
|
|
138
139
|
|
|
139
140
|
After installing conda, run these commands in an `Anaconda Powershell Prompt`:
|
|
140
|
-
- `conda create --name openfisca python=3.
|
|
141
|
+
- `conda create --name openfisca python=3.11` to create an `openfisca` environment.
|
|
141
142
|
- `conda activate openfisca` to use your new environment.
|
|
142
143
|
|
|
143
144
|
Then, choose one of the following options according to your use case:
|
|
@@ -167,6 +168,15 @@ To run the entire test suite:
|
|
|
167
168
|
make test
|
|
168
169
|
```
|
|
169
170
|
|
|
171
|
+
If you have many tests, you could run them in parallel :
|
|
172
|
+
```sh
|
|
173
|
+
make test-core openfisca_args="--in-parallel"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
You could add an option `--num-workers=4` to limit to 4 threads. Default is your CPU Core number minus 1.
|
|
177
|
+
|
|
178
|
+
Be aware that this add overhead so use it only for huge test suite.
|
|
179
|
+
|
|
170
180
|
To run all the tests defined on a test file:
|
|
171
181
|
|
|
172
182
|
```sh
|
|
@@ -18,7 +18,7 @@ This package contains the core features of OpenFisca, which are meant to be used
|
|
|
18
18
|
|
|
19
19
|
## Environment
|
|
20
20
|
|
|
21
|
-
OpenFisca runs on Python
|
|
21
|
+
OpenFisca runs on Python. See [setup.py](setup.py) for supported versions.
|
|
22
22
|
|
|
23
23
|
OpenFisca also relies strongly on NumPy. The last four minor versions should work, but only the latest/stable is tested.
|
|
24
24
|
|
|
@@ -32,7 +32,7 @@ To install it locally you can use one of these two options:
|
|
|
32
32
|
|
|
33
33
|
### Installing `openfisca-core` with `pip`
|
|
34
34
|
|
|
35
|
-
This installation requires [Python](https://www.python.org/downloads/)
|
|
35
|
+
This installation requires [Python](https://www.python.org/downloads/) and [GIT](https://git-scm.com) installations.
|
|
36
36
|
|
|
37
37
|
To install `openfisca-core` locally in development mode run the following commands in a shell terminal:
|
|
38
38
|
|
|
@@ -57,7 +57,7 @@ Conda is the easiest way to use OpenFisca under Windows as by installing Anacond
|
|
|
57
57
|
If 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.
|
|
58
58
|
|
|
59
59
|
After installing conda, run these commands in an `Anaconda Powershell Prompt`:
|
|
60
|
-
- `conda create --name openfisca python=3.
|
|
60
|
+
- `conda create --name openfisca python=3.11` to create an `openfisca` environment.
|
|
61
61
|
- `conda activate openfisca` to use your new environment.
|
|
62
62
|
|
|
63
63
|
Then, choose one of the following options according to your use case:
|
|
@@ -87,6 +87,15 @@ To run the entire test suite:
|
|
|
87
87
|
make test
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
+
If you have many tests, you could run them in parallel :
|
|
91
|
+
```sh
|
|
92
|
+
make test-core openfisca_args="--in-parallel"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
You could add an option `--num-workers=4` to limit to 4 threads. Default is your CPU Core number minus 1.
|
|
96
|
+
|
|
97
|
+
Be aware that this add overhead so use it only for huge test suite.
|
|
98
|
+
|
|
90
99
|
To run all the tests defined on a test file:
|
|
91
100
|
|
|
92
101
|
```sh
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import sys
|
|
3
3
|
import warnings
|
|
4
|
+
from importlib.metadata import version
|
|
4
5
|
|
|
5
6
|
from openfisca_core.scripts import add_tax_benefit_system_arguments
|
|
6
7
|
|
|
@@ -11,6 +12,11 @@ from openfisca_core.scripts import add_tax_benefit_system_arguments
|
|
|
11
12
|
|
|
12
13
|
def get_parser():
|
|
13
14
|
parser = argparse.ArgumentParser()
|
|
15
|
+
parser.add_argument(
|
|
16
|
+
"--version",
|
|
17
|
+
action="version",
|
|
18
|
+
version=f"OpenFisca-Core {version('OpenFisca-Core')}",
|
|
19
|
+
)
|
|
14
20
|
|
|
15
21
|
subparsers = parser.add_subparsers(help="Available commands", dest="command")
|
|
16
22
|
subparsers.required = (
|
|
@@ -134,6 +140,18 @@ def get_parser():
|
|
|
134
140
|
default=None,
|
|
135
141
|
help="variables to ignore. If specified, do not test the given variables.",
|
|
136
142
|
)
|
|
143
|
+
parser.add_argument(
|
|
144
|
+
"--in-parallel",
|
|
145
|
+
action="store_true",
|
|
146
|
+
default=False,
|
|
147
|
+
help="run tests in parallel",
|
|
148
|
+
)
|
|
149
|
+
parser.add_argument(
|
|
150
|
+
"--num-workers",
|
|
151
|
+
type=int,
|
|
152
|
+
default=0,
|
|
153
|
+
help="number of parallel workers (default: CPU count - 1)",
|
|
154
|
+
)
|
|
137
155
|
|
|
138
156
|
return parser
|
|
139
157
|
|
|
@@ -20,6 +20,9 @@ def main(parser) -> None:
|
|
|
20
20
|
)
|
|
21
21
|
|
|
22
22
|
options = {
|
|
23
|
+
"country_package": args.country_package,
|
|
24
|
+
"extensions": args.extensions,
|
|
25
|
+
"reforms": args.reforms,
|
|
23
26
|
"pdb": args.pdb,
|
|
24
27
|
"performance_graph": args.performance_graph,
|
|
25
28
|
"performance_tables": args.performance_tables,
|
|
@@ -32,4 +35,16 @@ def main(parser) -> None:
|
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
paths = [os.path.abspath(path) for path in args.path]
|
|
38
|
+
|
|
39
|
+
# Parallel mode
|
|
40
|
+
if args.in_parallel:
|
|
41
|
+
from openfisca_core.tools.test_runner import run_tests_in_parallel
|
|
42
|
+
|
|
43
|
+
return sys.exit(
|
|
44
|
+
run_tests_in_parallel(
|
|
45
|
+
tax_benefit_system, paths, options, args.num_workers, args.verbose
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
# Default serial mode
|
|
35
50
|
sys.exit(run_tests(tax_benefit_system, paths, options))
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Pytest plugin for running OpenFisca tests in parallel worker processes.
|
|
2
|
+
|
|
3
|
+
This plugin is loaded by pytest workers spawned by run_tests_in_parallel().
|
|
4
|
+
It configures each worker with its own tax-benefit system and test options.
|
|
5
|
+
|
|
6
|
+
The parallel test architecture works as follows:
|
|
7
|
+
1. Main process: run_tests_in_parallel() splits test files into batches
|
|
8
|
+
2. Main process: spawns multiple pytest workers via subprocess
|
|
9
|
+
3. Each worker: loads this plugin to configure its test environment
|
|
10
|
+
4. Each worker: runs its batch of tests independently
|
|
11
|
+
5. Main process: aggregates results and reports failures
|
|
12
|
+
|
|
13
|
+
Configuration is passed via environment variables:
|
|
14
|
+
- OPENFISCA_COUNTRY_PACKAGE: The country package to load
|
|
15
|
+
- OPENFISCA_EXTENSIONS: JSON array of extensions to load
|
|
16
|
+
- OPENFISCA_REFORMS: JSON array of reforms to apply
|
|
17
|
+
- OPENFISCA_OPTIONS: JSON object with test options (verbose, name_filter, etc.)
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
import json
|
|
21
|
+
import os
|
|
22
|
+
|
|
23
|
+
from openfisca_core.scripts import build_tax_benefit_system
|
|
24
|
+
from openfisca_core.tools.test_runner import OpenFiscaPlugin
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def pytest_configure(config):
|
|
28
|
+
"""Pytest hook called when each worker process initializes.
|
|
29
|
+
|
|
30
|
+
This function is automatically invoked by pytest when it loads this plugin.
|
|
31
|
+
It sets up the OpenFisca test environment for the worker by:
|
|
32
|
+
1. Reading configuration from environment variables
|
|
33
|
+
2. Building the tax-benefit system with specified country, extensions, and reforms
|
|
34
|
+
3. Registering the OpenFisca plugin with pytest
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
config: Pytest config object provided by pytest framework
|
|
38
|
+
"""
|
|
39
|
+
# Extract country package from environment (optional)
|
|
40
|
+
country = os.environ.get("OPENFISCA_COUNTRY_PACKAGE") or None
|
|
41
|
+
|
|
42
|
+
# Parse JSON arrays for extensions and reforms
|
|
43
|
+
extensions = json.loads(os.environ.get("OPENFISCA_EXTENSIONS", "[]"))
|
|
44
|
+
reforms = json.loads(os.environ.get("OPENFISCA_REFORMS", "[]"))
|
|
45
|
+
|
|
46
|
+
# Build the tax-benefit system with the specified configuration
|
|
47
|
+
tbs = build_tax_benefit_system(country, extensions, reforms)
|
|
48
|
+
|
|
49
|
+
# Parse test options (verbose, name_filter, etc.)
|
|
50
|
+
options_json = os.environ.get("OPENFISCA_OPTIONS", "{}")
|
|
51
|
+
options = json.loads(options_json)
|
|
52
|
+
|
|
53
|
+
# Create and register the OpenFisca plugin for this worker
|
|
54
|
+
plugin = OpenFiscaPlugin(tbs, options)
|
|
55
|
+
config.pluginmanager.register(plugin, name="openfisca_parallel_plugin")
|