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.
Files changed (198) hide show
  1. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/CHANGELOG.md +26 -0
  2. {openfisca_core-43.5.0 → openfisca_core-44.0.3/OpenFisca_Core.egg-info}/PKG-INFO +18 -8
  3. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/SOURCES.txt +1 -0
  4. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/requires.txt +9 -1
  5. {openfisca_core-43.5.0/OpenFisca_Core.egg-info → openfisca_core-44.0.3}/PKG-INFO +18 -8
  6. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/README.md +12 -3
  7. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/openfisca_command.py +18 -0
  8. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/run_test.py +15 -0
  9. openfisca_core-44.0.3/openfisca_core/tools/parallel_plugin.py +55 -0
  10. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tools/test_runner.py +370 -0
  11. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/setup.cfg +1 -1
  12. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/setup.py +13 -5
  13. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/LICENSE +0 -0
  14. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/MANIFEST.in +0 -0
  15. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/dependency_links.txt +0 -0
  16. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/entry_points.txt +0 -0
  17. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/OpenFisca_Core.egg-info/top_level.txt +0 -0
  18. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/__init__.py +0 -0
  19. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/__init__.py +0 -0
  20. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/dummy.py +0 -0
  21. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/formulas.py +0 -0
  22. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/misc.py +0 -0
  23. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/py.typed +0 -0
  24. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/rates.py +0 -0
  25. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/__init__.py +0 -0
  26. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/test_dummy.py +0 -0
  27. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/test_formulas.py +0 -0
  28. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/commons/tests/test_rates.py +0 -0
  29. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/__init__.py +0 -0
  30. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/in_memory_storage.py +0 -0
  31. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/on_disk_storage.py +0 -0
  32. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/data_storage/types.py +0 -0
  33. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/__init__.py +0 -0
  34. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/_core_entity.py +0 -0
  35. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/_description.py +0 -0
  36. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/entity.py +0 -0
  37. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/group_entity.py +0 -0
  38. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/helpers.py +0 -0
  39. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/py.typed +0 -0
  40. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/role.py +0 -0
  41. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/__init__.py +0 -0
  42. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/test_entity.py +0 -0
  43. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/test_group_entity.py +0 -0
  44. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/tests/test_role.py +0 -0
  45. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/entities/types.py +0 -0
  46. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/__init__.py +0 -0
  47. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/cycle_error.py +0 -0
  48. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/empty_argument_error.py +0 -0
  49. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/nan_creation_error.py +0 -0
  50. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/parameter_not_found_error.py +0 -0
  51. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/parameter_parsing_error.py +0 -0
  52. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/period_mismatch_error.py +0 -0
  53. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/situation_parsing_error.py +0 -0
  54. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/spiral_error.py +0 -0
  55. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/variable_name_config_error.py +0 -0
  56. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/errors/variable_not_found_error.py +0 -0
  57. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/experimental/__init__.py +0 -0
  58. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/experimental/_errors.py +0 -0
  59. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/experimental/_memory_config.py +0 -0
  60. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/formula_helpers.py +0 -0
  61. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/__init__.py +0 -0
  62. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/helpers.py +0 -0
  63. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/holder.py +0 -0
  64. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/tests/__init__.py +0 -0
  65. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/tests/test_helpers.py +0 -0
  66. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/holders/types.py +0 -0
  67. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/__init__.py +0 -0
  68. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_enum_type.py +0 -0
  69. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_errors.py +0 -0
  70. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_guards.py +0 -0
  71. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/_utils.py +0 -0
  72. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/config.py +0 -0
  73. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/enum.py +0 -0
  74. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/enum_array.py +0 -0
  75. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/py.typed +0 -0
  76. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/tests/__init__.py +0 -0
  77. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/tests/test_enum.py +0 -0
  78. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/tests/test_enum_array.py +0 -0
  79. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/indexed_enums/types.py +0 -0
  80. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/memory_config.py +0 -0
  81. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/model_api.py +0 -0
  82. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/__init__.py +0 -0
  83. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/at_instant_like.py +0 -0
  84. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/config.py +0 -0
  85. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/helpers.py +0 -0
  86. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter.py +0 -0
  87. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_at_instant.py +0 -0
  88. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_node.py +0 -0
  89. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_node_at_instant.py +0 -0
  90. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_scale.py +0 -0
  91. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/parameter_scale_bracket.py +0 -0
  92. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/values_history.py +0 -0
  93. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/parameters/vectorial_parameter_node_at_instant.py +0 -0
  94. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/__init__.py +0 -0
  95. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/_errors.py +0 -0
  96. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/_parsers.py +0 -0
  97. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/config.py +0 -0
  98. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/date_unit.py +0 -0
  99. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/helpers.py +0 -0
  100. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/instant_.py +0 -0
  101. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/period_.py +0 -0
  102. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/py.typed +0 -0
  103. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/__init__.py +0 -0
  104. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/__init__.py +0 -0
  105. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/test_helpers.py +0 -0
  106. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/test_instant.py +0 -0
  107. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/helpers/test_period.py +0 -0
  108. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/test_instant.py +0 -0
  109. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/test_parsers.py +0 -0
  110. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/periods/tests/test_period.py +0 -0
  111. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/__init__.py +0 -0
  112. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/_core_population.py +0 -0
  113. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/_errors.py +0 -0
  114. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/group_population.py +0 -0
  115. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/population.py +0 -0
  116. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/populations/types.py +0 -0
  117. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/__init__.py +0 -0
  118. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/entity_to_person_projector.py +0 -0
  119. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/first_person_to_entity_projector.py +0 -0
  120. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/helpers.py +0 -0
  121. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/projector.py +0 -0
  122. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/typing.py +0 -0
  123. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/projectors/unique_role_to_entity_projector.py +0 -0
  124. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/rates.py +0 -0
  125. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/reforms/__init__.py +0 -0
  126. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/reforms/reform.py +0 -0
  127. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/reforms/reform_excel.py +0 -0
  128. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/__init__.py +0 -0
  129. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/assets/__init__.py +0 -0
  130. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/assets/index.html +0 -0
  131. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/find_placeholders.py +0 -0
  132. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/measure_numpy_condition_notations.py +0 -0
  133. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/measure_performances.py +0 -0
  134. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/measure_performances_fancy_indexing.py +0 -0
  135. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/__init__.py +0 -0
  136. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v16_2_to_v17/__init__.py +0 -0
  137. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v16_2_to_v17/legislation.xsd +0 -0
  138. {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
  139. {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
  140. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/migrations/v24_to_25.py +0 -0
  141. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/remove_fuzzy.py +0 -0
  142. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/scripts/simulation_generator.py +0 -0
  143. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulation_builder.py +0 -0
  144. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/__init__.py +0 -0
  145. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/_build_default_simulation.py +0 -0
  146. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/_build_from_variables.py +0 -0
  147. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/_type_guards.py +0 -0
  148. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/helpers.py +0 -0
  149. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/simulation.py +0 -0
  150. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/simulation_builder.py +0 -0
  151. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/simulations/typing.py +0 -0
  152. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxbenefitsystems/__init__.py +0 -0
  153. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxbenefitsystems/tax_benefit_system.py +0 -0
  154. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/__init__.py +0 -0
  155. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/abstract_rate_tax_scale.py +0 -0
  156. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/abstract_tax_scale.py +0 -0
  157. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/amount_tax_scale_like.py +0 -0
  158. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/helpers.py +0 -0
  159. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/linear_average_rate_tax_scale.py +0 -0
  160. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/marginal_amount_tax_scale.py +0 -0
  161. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/marginal_rate_tax_scale.py +0 -0
  162. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/rate_tax_scale_like.py +0 -0
  163. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/single_amount_tax_scale.py +0 -0
  164. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/taxscales/tax_scale_like.py +0 -0
  165. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tools/__init__.py +0 -0
  166. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tools/simulation_dumper.py +0 -0
  167. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/__init__.py +0 -0
  168. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/computation_log.py +0 -0
  169. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/flat_trace.py +0 -0
  170. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/full_tracer.py +0 -0
  171. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/performance_log.py +0 -0
  172. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/simple_tracer.py +0 -0
  173. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/trace_node.py +0 -0
  174. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/tracers/tracing_parameter_node_at_instant.py +0 -0
  175. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/types.py +0 -0
  176. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/__init__.py +0 -0
  177. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/config.py +0 -0
  178. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/helpers.py +0 -0
  179. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/tests/__init__.py +0 -0
  180. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/tests/test_definition_period.py +0 -0
  181. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/variables/variable.py +0 -0
  182. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/warnings/__init__.py +0 -0
  183. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/warnings/libyaml_warning.py +0 -0
  184. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_core/warnings/tempfile_warning.py +0 -0
  185. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/__init__.py +0 -0
  186. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/app.py +0 -0
  187. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/errors.py +0 -0
  188. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/handlers.py +0 -0
  189. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/__init__.py +0 -0
  190. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/entities.py +0 -0
  191. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/parameters.py +0 -0
  192. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/spec.py +0 -0
  193. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/tax_benefit_system.py +0 -0
  194. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/loader/variables.py +0 -0
  195. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/openAPI.yml +0 -0
  196. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/scripts/__init__.py +0 -0
  197. {openfisca_core-43.5.0 → openfisca_core-44.0.3}/openfisca_web_api/scripts/serve.py +0 -0
  198. {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: 43.5.0
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: https://www.fsf.org/licensing/licenses/agpl-3.0.html
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 3.7. More recent versions should work but are not tested.
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/) 3.7+ and [GIT](https://git-scm.com) installations.
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.7` to create an `openfisca` environment.
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: 43.5.0
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: https://www.fsf.org/licensing/licenses/agpl-3.0.html
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 3.7. More recent versions should work but are not tested.
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/) 3.7+ and [GIT](https://git-scm.com) installations.
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.7` to create an `openfisca` environment.
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 3.7. More recent versions should work but are not tested.
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/) 3.7+ and [GIT](https://git-scm.com) installations.
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.7` to create an `openfisca` environment.
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")